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

# 售票员卖票
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()

 

# 售票员
class Driver:
    _self=None
    _name="Driver-Jack"
    _sum=0 # 售票员的业绩 初始值 是0
    # 定义售票员的属性
    def __new__(cls, *args, **kwargs):
        if cls._self is None:
            cls._self = super().__new__(cls)  # 将基类super()中的售票员赋值给当前售票员
        return  cls._self
    # 定义售票员的做的事情 买票
    def sell(self,name): # 将票卖给乘客
        print(f"司机{self._name}将票卖给{name}")
        self._sum+=1 # 售票员 业绩加1
    def getsum(self):# 终极目的获得业绩
        yeji=self._sum
        print(f'售票员当前的业绩是{yeji}')
        return self._sum
# 定义一个买票的人
class Passenger:# 定义买票人的属性
    def __init__(self,name):
        self._name=name
    # 定义一个乘客的动作 买票
    def bug(self):
        # 第一步 实例化 售票员
        driver= Driver()
        # 调用售票员的动作,传入 乘客的名字
        p_bug=driver.sell(self._name)
        # 当乘客买票后,售票员获得业绩
        p_sum=driver.getsum()


Passenger('A').bug()
Passenger('B').bug()

 

# 单例  仅获得一个司机
class Driver:
    # 定义本身
    _self= None
    _name="Driver_Jack"
    _sum=0 # 初始化业绩是0
    # 使用new 函数定义一个唯一的实例
    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}')
        #售票后 业绩加1
        self._sum+= 1
    def getsum(self):
        return self._sum
# 定义一个乘客类
class Pass:
    def __init__(self,name):# 乘客的属性 姓名
        self._name= name
    def bug(self):# 乘客购买
        p=Driver() # 实例化 司机
        p.sell(self._name) # 将乘客的姓名传给司机的售卖
        yeji=p.getsum()
        print(f"司机的业绩{yeji}")
Pass("a").bug()
Pass("b").bug()

 

posted @ 2023-07-16 21:04  胖豆芽  阅读(3)  评论(0编辑  收藏  举报