单例 每次都只有一个售票员
# 售票员卖票 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()