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