''' 使用工厂模式、单例模式实现如下需求: (1) 电脑工厂类 ComputerFactory 用于生产电脑 Computer。工厂类使用单例模式,也就是说只能有一个工厂对象。 (2) 工厂类中可以生产各种品牌的电脑:联想、华硕、神舟 (3) 各种品牌的电脑使用继承实现: (4) 父类是 Computer 类,定义了 calculate 方法 (5) 各品牌电脑类需要重写父类的 calculate ''' class ComputerFactory: __obj = None __init_flag = True def create_computer(self,brand): if brand == "联想": return Lenovo() elif brand == "华硕": return Asus() elif brand == "神舟": return Hasee() else: return "未知品牌,无法创建" def __new__(cls, *args, **kwargs): if cls.__obj == None: #当前的类对象cls下的类属性是否为空 cls.__obj = object.__new__(cls) return cls.__obj def __init__(self): if ComputerFactory.__init_flag: #等于if MySingleton.__init_flag == True print("init ComputerFactory...") ComputerFactory.__init_flag = False #保证了只调用1次初始化 class Computer: def calculate(self): print("生产电脑啦!") class Lenovo(Computer): #联想 def calculate(self): print("生产联想电脑啦!") class Asus(Computer): #华硕 def calculate(self): print("生产华硕电脑啦!") class Hasee(Computer): #神舟 def calculate(self): print("生产神舟电脑啦!") factory = ComputerFactory() c1 = factory.create_computer("联想") print(c1.calculate()) factory2 = ComputerFactory() c2 = factory2.create_computer("华硕") print(c2.calculate())
老师,请问一下:
1、运行图(如上显示)里的None是哪里来的
2、单例模式这个还是有点不太理解为什么要这么写(如下显示)
老师,用控制输入月薪的那个作业
为什么我只能用salary=input("请输入月薪")不报错
我用monthly pay=input("请输入月薪")就提示
那我该怎么用我自己想要的名字,定义月薪呢
下载了 python 但是没有勾选项怎么办
x1 = [(-)(-+width*num)] y1 = [(-)(--width*num)]
老师,你好,我想问一下这两行代码问么解释,不太能理解。这里的400又是怎么来的
t.goto(x1[0][0],x1[0][1])# t.goto(x1[1][0],x1[1][1])
还有这两行代码也不理解,老师能帮助我理解一下吗
请问老师,在栈帧里生成的新对象,会随着栈帧的消失而消失吗,我的理解是不会消失,当下次调用到生成新对象这个语句时,就不会产生新的对象了,这个老的对象会自动赋值给这次的调用,所以当函数需要返回这个值时,也是把这个对象的id返回出去。老师我的理解对吗。
a = [10,20] print(id(a)) def test01(m): print(id(m)) m.append(30) print(m) print(id(m)) test01(a)
请问老师,m.append(30),我能不能理解为是列表的扩容,那么原先的这个列表地址如果不变的话,那是不是指在生成这个列表对象时,这个地址就非常的大,足够能装下后面新增的对象,但不是说,计算机会自动优化吗,那地址肯定是很小的,或者说,我是不是对地址的概念理解有偏差,地址是指内存块吗?
代码:
运行结果:
老师请问一下,在这里我定义了一个电脑工厂类ComputerFactory,使用的是单例模式,那么此时应该只能有一个工厂对象,在后面我用e=ComputerFactory()和e2=ComputerFactory()建立了一个对象e和另外一个对象e2,根据单例模式,这里的e和e2应该是同一个对象,但是我打印了这两个对象的地址发现这两个对象的地址不同,一个地址是1977310502816,另外一个地址是140724579081432,地址不同说明这两个对象不是同一个对象,老师请问一下这是因为什么原因?是因为我的代码有问题吗?
老师,isinstnce(m,Man) 中的Man是什么意思,怎么理解
#测试方法的动态性 class Person: def work(self): print("努力工作") def play_game(self, name): print("{0}在玩游戏".format(name)) def marry(s): print("挣钱娶媳妇") Person.play = play_game p = Person() p.work() p.play('张三') Person.work = marry p.work()
类方法work() self参数是默认的吗,不是构造函数__init__才有吗
试过play_name带一个参数,但是运行p.play('张三')提示给了两个参数,这是什么原因
试过marry()不带参数,叶辉提示参数错误
类方法都自带一个self参数吗?
q.salary为啥不用加()?这个怎样实现调用的呢
没有懂既然P1和P2都要被销毁,为啥子还要加一个del P2这个语句呢 这个语句不想相当于重复了吗
‘name' in a是检测 键 有没有在字典里面。
有没有方法检测 值 在字典里面?
前面说到布尔值True的本质就是1,那么转换为字符串后为什么显示的不是1呢?
布尔值True转换为字符串后,还可以变得回来吗?
老师,函数也是对象那一行代码是什么意思?为什么可以那样定义?
上面部分的ctrl+Z和回车输入以后为什么没有变成C:。。。。。这个东西?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637