append增加元素的方式,是不是也创建了新的对象,他们的id都不一样了
'''定义一个 Employee 雇员类,要求如下: (1) 属性有:id、name、salary (2) 运算符重载+:实现两个对象相加时,默认返回他们的薪水和 (3) 构造方法要求:输入 name、salary,不输入 id。id 采用自增的方式,从 1000 开始自增,第一个新增对象是 1001,第二个新增对象是 1002 (4) 根据 salary 属性,使用@property 设置属性的 get 和 set 方法。set 方法要求输入:1000-50000 范围的数''' class Employee:#定义一个雇员类 id=1000#id从1000开始自增 def __init__(self,name,salary): self.name=name self.__salary=salary Employee.id=Employee.id+1 def __add__(self,other): if isinstance(other,Employee): return "薪水和:{}".format(other.__salary+self.__salary) else: return "同一对象,不能相加" @property def salary(self): return "顺序是:{0},名字是:{1},薪资是:{2}".format(Employee.id,self.name,self.__salary) @salary.setter def salary(self, salary): if 1000 < salary < 50000: self.__salary = salary else: print("输入错误!范围有误!!") e1=Employee("王老大",2000) print(e1.salary) e2=Employee("王老二",20000) print(e2.salary) print(e1+e2) e3=Employee("王老幺",200) print(e3.salary) 老师,为什么我这个范围不对但是不返回范围有误
老师,我们在这里相当于重写了del方法,视频中的p2变量相当于被我们del删除了,p1也是在程序最后一行代码执行完python自动调用del方法把p1删除了,那么我有点奇怪的是,我们重写的这个del方法只有print语句一行,实际上是个假方法,为什么这个假方法我们在调用它删除p2的时候还真的给他删了呢?是不是重写del方法不影响他的删除效果?
Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> x = 3
y = 4
a = 1
b = 2
s = (5+10*x)/5-13*(y-1)(a+b)/x+9*(5/x+(12+x)/y)
print(s)
SyntaxError: multiple statements found while compiling a single statement
>>> 这是哪里出错了的呢
class Student: school = '123' def __init__(self, name): self.name = name def say_name(self): print(self.name) print(Student.school) print(self.school) a=Student()
请问老师:在类方法中,Student.school和self.school 均可以引用到类属性school='123',这两者有何区别,在内存中是如何存在的?谢谢
#测试单例模式 class MySingleton: __obj = None #类属性 def __new__(cls,*args,**kwargs): if cls.__obj ==None: cls.__obj = object.__new__(cls) return cls.__obj def __init__(self,name): print("init....") self.name = name a = MySingleton("aa") b = MySingleton("bb") print(a) print(b)
老师,代码一样,但是结果不一样
a=3,我在赋值给a前,3的内存块里的地址是否已经存在了的
a1 = ["高小一",18,30000,"北京"] a2 = ["高小二",19,20000,"上海"] a3 = ["高小五",20,10000,"深圳"] a = [a1,a2,a3] b = ["姓名","年龄","薪资","城市"] for i in (1,4): c = dict(zip(b,a[i])) print(c)
老师,你好,请问一下我这个问题出在哪里,运行结果出错
老师,请问多态是不是就是不同情况下对父类中的方法进行重写?那如果我想要调用父类中被重写的方法是不是应该用super()获得?
老师,请问如果一个say方法被重写,那么他之前的所有say方法都会执行被重写后的方法吗?是不是意味着所有say方法里所传的参数都是一样的?执行后所得结果也是一样的?
你好,老师:
关于数组从长度从8扩容到32时,是不是取散列值每5位计算是否就可以?
因为二进制的11111就是31了,加上0的话正好位长度为32的数组。
扩容到64位的时候,是不是取散列值的每6位计算就可以?
老师说的扩容到32 就要取6位,扩容到64 就要取8位、这里理解不太了。
import turtle class MyRectangle: def __init__(self,width = 100,height = 100,x = 0,y =0): #实例属性 self.width = width self.height = height self.x = x self.y = y def getArea(self):#算面积,实例方法 return (self.width * self.height) def getPerimeter(self):#算周长,实例方法 return ((self.width + self.height) *2) def draw(self): #画图像方法 turtle.penup() turtle.goto(self.x, self.y) turtle.pendown() turtle.forward(self.width) turtle.left(90) turtle.forward(self.height) turtle.left(90) turtle.forward(self.width) turtle.left(90) turtle.forward(self.height) turtle.done() s = MyRectangle() print(s.getPerimeter()) print(s.getArea()) s.draw() s = MyRectangle(200,10000,10,1) print(s.getPerimeter()) print(s.getArea()) s.draw()
输出结果(乌龟图没有截图):
问题:老师你好!我想问一下为什么我的输出结果只有两个结果,但是我一共调用了四次方法,前两个默认的数值被运用了,但是后面重新传参数的却没有输出结果。我的想法是,后面传参的新数值会覆盖原来默认的数值再跑一次程序,但是没有。麻烦老师能为我解释一下,谢谢!!
老师使用range()创建整数列表也是包头不包尾对么?
如果说list(range(0,10,1))只会生成0到9的列表、那讲义中说end的位置表示结尾数字怎么理解?
一,我完全按照视频中讲的敲的代码,为什么我的查不到s 的值?
值应该是"hello,sxt"和"hello,gxt"
上面时间计算出毫秒的浮点数不是1530168669.6236002吗?int()后怎么就变成1530168754了,不应该是1530168669吗?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637