单例 每次都只有一个售票员

发布时间 2023-07-16 21:11:17作者: 胖豆芽
# 售票员卖票
class Driver:
    _self=None
    _name= 'Driver_Jack'# 售票员的名字
    _num= 0 # 售票员的业绩
    def __new__(cls, *args, **kwargs):
        if  cls._self is None :# 如果售票员这个类是空
            cls._self=super().__new__(cls) # 将从基类中继承的卖票员的类赋值给售票员类
        return cls._self # 返回自己,也就是售票员类


    def sell(self,name):# 定义一个出售的类
        print(f'司机{self._name}卖给了乘客{name}一张票')
        #卖的票叠加
        self._num+= 1
    def getnum(self):
        return self._num # 打印司机的业绩

class Passenger:
    def __init__(self,name):
        self._name= name # 乘客只有一个名字属性
    def buy(self):# 乘客定义一个从司机手里买票
        p_driver= Driver()# 实例化一个 司机对象
        p_driver.sell(self._name)# 调用司机对象,传入乘客的姓名
        num_sum=p_driver.getnum()
        print(num_sum)


li=['A','B','C','D']
for one in li:
    Passenger(one).buy()