? - 对象的某一个属性是另一个类的对象
class A:
def __init__(self,B)
self.B = B
class B:
pass
b = B()
a = A(B)
? - 减少代码冗余
? - 一类事物的多种形态
? - 都有自己的特性,例如 ??,?? 都会叫,叫就是他们的多态性
? - 崇尚鸭子类型(只要走路像鸭子【对象中有某个绑定方法】,那你就是鸭子)
? - 不考虑对象类型的情况下使用实例(也就是使用对象中的相同名字的方法)
? -- 增加了程序的灵活性
? -- 增加了程序的可扩展性
? - 就是把东西包起来,别人用不了,外部访问不到,但是在python中这个包装数据的箱子是纸做的,通过一些方法,比如下面说到的@property、@property.setter、@property.deleter,就可以实现对私有变量的获取,修改,删除
class A:
def __init__(self, x, y):
self.x = x
self.y = y
@property
def size(self):
return self.x * self.y
s = A(10,2)
print(s.size) # 区别就在于size加不加括号
@property的两个扩展应用 (装饰器)
? - 用于使用修改删除定义的私有变量
@property.setter
@property.deleter
class A:
def __init__(self):
self.__x = 10
self.__y = 20
@property # 获取,不需要括号
def size(self):
return self.__x * self.__y
@size.setter # 修改
def size(self, t):
self.__x -= t
@size.deleter # 删除
def size(self):
del self.__x
s = A() # 定义s对象
print(s.size) # 运行size,执行__x 乘 __y
s.size = 100 # 修改 __x 减去 100
print(s.size)
del s.size # 删除__x
print(s.__dict__)
原文:https://www.cnblogs.com/xiongchao0823/p/11425126.html