day23笔记
一、面向对象命名空间
1、对于类中的静态属性
当类去调用时,就是调用类中的属性
当类中的对象去调用时,先在自己的命名空间去寻找,如果找不到再到类的命名空间去寻 找,都没有则会报错
1 class A: 2 role="person" 3 def __init__(self,role="dog"): 4 self.role=role 5 6 a=A() 7 print(A.role) #结果为person 8 print(a.role) #结果为dog
2、对于类的动态属性(方法)
1、这个方法本身储存在类中
2、当类中的对象去调用类中的方法时,依赖于一个存有此方法地址的的地址簿
3、对于对象的属性
1、对象的属性就存在于对象的命名空间中
2、只能被对象调用、修改,不能被类调用
二、组合
当在一个类中使用了另一个类中的方法,就叫组合
使用组合增强了代码的重用性
1 class Circle: 2 def __init__(self,r): 3 self.r = r 4 5 def area(self): 6 return self.r*self.r*3.14 7 8 def perimeter(self): 9 return self.r*2*3.14 10 11 class Ring: 12 def __init__(self,r_out,r_in): #10,5 13 self.c_out = Circle(r_out) 14 self.c_in = Circle(r_in) 15 16 def area(self): 17 return self.c_out.area() - self.c_in.area() 18 19 def perimeter(self): 20 return self.c_out.perimeter() + self.c_in.perimeter() 21 22 r1 = Ring(10,5) 23 print(r1.area()) 24 print(r1.perimeter())
浙公网安备 33010602011771号