1 类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,在定义类的时候,可以先在这个函数里面定义要使用的属性,这样在类里面写其它方法的时候更方便属性的调用,
class Rectangle(): def getPeri(self,a,b): return (a + b)*2 def getArea(self,a,b): return a*b rect = Rectangle() print(rect.getPeri(3,4)) print(rect.getArea(3,4)) print(rect.__dict__) print(rect.__init__()) # 14 # 12 # {} # None class Rectangle(): def __init__(self,a,b): self.a = a self.b = b def getPeri(self): return (self.a + self.b)*2 def getArea(self): return self.a * self.b rect = Rectangle(3,4) print(rect.getPeri()) print(rect.getArea()) print(rect.__dict__) print(rect.__init__(5,6)) # 14 # 12 # {'a': 3, 'b': 4} # None https://blog.csdn.net/geerniya/article/details/77487941?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
2 self
self的本质是指代类new的对象实例,因为对于类中的方法,不同的对象要调用同一个方法,为了区别不同对象对同一个方法的调用,方法的第一个参数self即代表了调用该方法的对象本身,所以在class里面编写method的时候,就必须把变量的第一个位子留出来,用来指代未来call这个method的instance。
self在定义时需要定义,但是在调用时会自动传入。self的名字并不是规定死的,但是最好还是按照约定是用self,换成其它也是可以的,self总是指向调用时的类的实例。
# 在Python的解释器内部,当我们调用t.prt()时,实际上Python解释成Test.prt(t),也就是说把self替换成类的实例。 class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt() # Test.prt(t) # <__main__.Test object at 0x0000000001DE15F8> # <class '__main__.Test'>
两种定义类属性的方法
# 这种定义方式new一个对象的时候,可以不添加对应的属性,即new一个学生的时候 # 是一个空表,当有了姓名和成绩时再输入 class Student: def __init__(self): self.name = None self.score = None student = Student() student.name = 'Tom' student.score = 88 print(student.name, student.score) # Tom 88 # 这种定义方式必须传值,不允许为空, class Student: def __init__(self, name, score): self.name = name self.score = score student = Student('Bob', 23) print(student.name, student.score) # Bob 23
ttt
1 https://blog.csdn.net/m0_37693335/article/details/82972925
https://blog.csdn.net/qq_25948717/article/details/81777508