首页 > 其他分享 >单例 每次都只有一个售票员

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

时间:2023-07-16 21:25:42浏览次数:25  
标签:__ name self 每次 单例 ._ 售票员 cls

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

 

标签:__,name,self,每次,单例,._,售票员,cls
From: https://www.cnblogs.com/haha1988/p/17558571.html

相关文章

  • 1-19 编写函数 reverse(s),将字符串 s 中的字符顺序颠倒过来。使用该函数 编写一个程
    ArchlinuxGCC13.1.1 202304292023-07-1521:41:44星期六 点击查看代码#include<stdio.h>#include<string.h>voidreverse(char*s);voidreverse_in();intmain(){reverse_in();return0;}voidreverse(char*s){inti,j;......
  • 单例
    单例的意义就是保证创建一个实例第一部分:没用单例之前出现了4个公交车司机;第二部分使用单例后,每次只有一个公交车司机;classBusDriver:def__init__(self):#定义公交车司机的姓名和卖票张数self._BusDriver_name='BusDriver-Jack'#姓名self._......
  • Win10每次重启后桌面图标排列被打乱的问题?
    一般桌面图标都和我们常用的软件放在一起,这样我们需要的时候就可以马上开始使用。可以说桌面图标是windows系统中教具的代表特征,但是今天发现每次重启Win10后桌面图标自动重新排列? 1.打开操作,输入命令gpedit.msc,然后单击确定。 2.在本地策略组编辑器中打开用户配置/管理模......
  • 怎么销毁单例
    staticNGUser*sharedInstance=nil;staticdispatch_once_tonceToken;+(instancetype)sharedInstance{dispatch_once(&onceToken,^{//调用父类的allocWithZone,不能使用self,避免循环引用sharedInstance=[[superallocWithZone:NULL]init];});......
  • .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相
    前言如标题所述,在ASP.NETCore应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NETCore应用程序之后,同样的字符串的哈希值(hash)但不相同了。这是什么意思呢?具体的应用场景是这样的:项目中有一张表的某个字段保存了类似URL这样的字符串,这张表......
  • 重温设计模式 --- 单例模式
    引言单例模式是一种创建型设计模式,它的主要目的是确保某个类在应用程序中只有一个实例,并且这个实例能够被全局访问。在许多情况下,单例模式是非常有用的,比如说当你需要创建一个全局的配置类或者日志类时,单例模式可以让你轻松地实现这些功能。在实现单例模式时,有两种常见的方法,“......
  • JS 中单例模式的具体实现细节和实践
    通用的创建单例模式的方法:1创建实例对象的职责和管理单例的职责分别放置于两个方法中。2两个方法可以互相独立而互不影响。3惰性加载单例模式,等到用到的时候才加载。1letcreateSingle=function(fn){2letresult;3returnfunction(){4//app......
  • Spring单例的解决方案
    1spring单例V.S设计模式的单例设计模式单例,在整个应用中只有一个实例spring单例,在一个IoC容器中只有一个实例Spring框架对单例的支持是采用单例注册表但spring中的单例也不影响应用并发访问。大多数时候客户端都在访问我们应用中的业务对象,为减少并发控制,不应在业务对象中设置那......
  • C语言单例模式
    单例模式的定义​ 单例模式的需求是保证在代码的整个运行期间,某种数据类型只有一个唯一的实例子。并且提供一个全局的访问接口。我们可以从两个角度来理解单例模式数据类型有且仅可以创建一个实例,编程人员不可以的随意的定义的此类型的实例。我们必须限制这种数据结构的创建。......
  • Docker安装Nacos并以单例模式运行
    Nacos单例模式运行使用嵌入式数据库即可,这里不依赖于mysql。拉取指定版本Nacos镜像:dockerpullnacos/nacos-server:2.0.3查看镜像列表:dockerimages以单例模式启动:dockerrun-d--namenacos-p8848:8848-eMODE=standalonenacos/nacos-server:2.0.3查看容器列表......