class ComputerFactory(object): instance = None init_flag = False def __new__(cls, *args, **kwargs): if cls.instance == None: cls.instance = object.__new__(cls) return cls.instance def __init__(self, brand): if self.init_flag: return self.brand = brand self.init_flag = True def CreatComputer(self): if self.brand == '联想': return Lenove().calculate() elif self.brand == '华硕': return ASUA().calculate() elif self.brand == '神州': return Hasee().calculate() else: print('你这个电脑太高级,没听过,不会造') class Computer(object): def calculate(self): print('电脑由各种配件组成') class Lenove(Computer): def calculate(self): print('联想电脑由各种配件组成') class ASUA(Computer): def calculate(self): print('华硕电脑由各种配件组成') class Hasee(Computer): def calculate(self): print('神州电脑由各种配件组成') factory = ComputerFactory('联想')
老师,你看我代码是哪里有问题么,为什么运行不显示
老师请问print("a:",a)中的"a:"为什么要加""和:
老师,
1、实例方法共享,实例属性不共享,这句话怎么理解?
我是这样理解的:此类生产的所有对象都可以调用实例方法,但自己只能拥有自己的属性,新添加的属性自己就没有
2、类对象共享实例方法吗?
3、类属性可以被类对象和实例对象共享?
4、类方法和静态方法中,不能访问实例方法和属性,是不是就是实例方法不被类方法和静态方法共享?
老师请问
下面for嵌套循环怎么做到与上面的一样
class Car: def __init__(self,Motor,Chassis,Seat,Shell,): self.Motor = Motor self.Chassis= Chassis self.Seat = Seat self.Shell = Shell def car_run(self): print("{0},{1},{2}".format(self.Motor, self.Chassis,self.Seat)) class Motor: def car_work(self): print("Motor working......") class Chassis: def car_work(self): print("Chassis working......") class Seat: def car_work(self): print("Seat working......") class Shell: def car_work(self): print("Shell working......") s1=Car(Motor(),Chassis(),Seat(),Shell) s1.car_run() print(s1)
老师怎样在 RUN 方法中 调用 WORK 方法呢 ??
class Employee: #定义一个员工对象 def __init__(self,name,salary): #定义构造函数 self.__name=name #属性私有化 self.__salary=salary id=1000 id+=1 self.id=id @property #装饰器将方法转换为属性 def salary(self): return self.__salary @salary.setter def salary(self,salary): if 1000< salary <50000: self.__salary = salary else: print("录入错误,薪水在1000到50000之间") def __add__(self,other): if isinstance(other.salary,int): return "他们的薪资和为:{0},id是{1}".format(self.salary+other.salary,self.id) else: return"不是同类对象,不能想加" empo1=Employee("haha",-2000) empo2=Employee("hhhhh",3000) s=empo1+empo2 print(s)
老师: 我想知道这个 IF 白设置了吗? 咋输入了 -2000 还给我加一起了?哪出了问题 就作业实操5 我不会我也找不到优秀实例 这个作业的全部代码和注释能 Show 给我 看下吗?/
这集视频讲的属实听不明白,明白到都不知道该怎么提问
class Employee: #定义一个员工对象 def __init__(self,salary): #定义构造函数 self.salary=salary def __add__(self,other): if isinstance(other,int): return self.salary+other else: return"不是同类对象,不能想加" empo1=Employee(2000) empo2=Employee(3000) s=empo1+empo2 print(s)
都是 int 类型的呀 为何不能相加输出
代码:
class Employee: id = 1000 def __init__(self,name,salary): self.name = name self.__salary = salary Employee.id += 1 def __add__(self, other): if isinstance(other,Employee): return "编号为{0}的员工{1}的薪水和为{2}".format(Employee.id,self.name,self.__salary+other.__salary) else: return "不是同类,不能相加" @property def salary(self): return "ID是{0}的员工{1}的薪水为{2}".format(Employee.id,self.name,self.__salary) @salary.setter def salary(self,salary): if 1000<=salary<=50000: self.__salary = salary else: return "工资输入有误,请重新输入1000~50000之间的数字" e1 = Employee("yuyu",30000) print(e1.salary) e2 = Employee("youyou",20000) print(e2.salary) e3 = Employee("鱼鱼",200) print(e3.salary) print("***********************") print(e1+e2) print(e1+3000)
运行结果:
老师好,我有两个问题:
ID是1003的员工薪水没有在条件范围内,为什么可以正常输出,我的代码哪里出现了问题?
实现两个对象薪水相加时,为什么出现的是第一个员工的name,这好像违背了题中同一员工薪水相加的意思,应该怎么改过来呢?
谢谢老师~
老师,本章节中使用的 super().say() 出错了啊,没获得想要的结果
b = input("输入个元素\n") if b == "Q" or "q": print("123") else: print("0")
老师我想问一下,我有个问题关于这个if判断语句。为啥我输入“1”,不应该输出结果“0”吗?
''''***************************************************************** *目标:输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提示 *方法:eval函数,if and else 判断方法 *date:6/9/2020 *****************************************************************''' import math (x1,y1) = eval(input("请输入第一组顶点的坐标:(x1,y1)")) (x2,y2) = eval(input("请输入第二组顶点的坐标:(x2,y2)")) (x3,y3) = eval(input("请输入第三组顶点的坐标:(x3,y3)")) a = length_01 =math.sqrt(((x1 - x2)**2 + (y1 - y2)**2))#求出两点之间的距离 b = length_02 =math.sqrt(((x1 - x3)**2 + (y1 - y3)**2)) c = length_03 =math.sqrt(((x2 - x3)**2 + (y2 - y3)**2)) if a + c > b and a + b > c and b + c > a: print("三角形的面积是:{0}".format(math.sqrt((1/16)*(a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))))# 海伦公式 else: print("错误坐标,请重试")
老师你好!假如我想将最后的结果输出保留4位有效数字应该怎么写呢?谢谢!!!
问题一:使用lambda表达式时候,多参数中为什么不能带有可变参数呢,例如:
f = lambda a, b, *c : a, b, c # 可变参数*args print(f(10, 20, 30, 40)) print(f())
提示错误如下:
而在传统函数定义中是可以的:如下
问题二:为什么不可以这样子?
f = [lambda **kwargs: kwargs, lambda *kwargs: kwargs] print(f[0](name='zhouzhou', age=23), f[1](name="weiwei", age=24))
运行结果如下:
实例对象实例方法中的代码信息会保存到对应的类对象中,调用实例方法实际上是调用指向类方法的引用,这样理解对不对
问题一:强制命名参数中,只提到了一个星号的情况,我试了试两个星号。提示报错,代码如下:
def f1(**a, b, c): print(a, b, c) f1(2, 3, 4, name = 'zhouzhou', age= 18)
报错信息如下:
问题二:可变参数(一个星号时)是用*args 还是可以随便起个名字呢。或者两个星号时使用**kwargs,还是随便七个名字。
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637