描述符類:
作用:描述另外一個類的屬性(類包括屬性和方法)
定義:至少實現(xiàn)了get()二拐、set()服鹅、delete()中的一個
_ get_():調(diào)用一個屬性時觸發(fā)
_ set_():為一個屬性賦值時觸發(fā)
_ delete_():采用del刪除屬性時觸發(fā)
class Colour:
``` Colour為描述符類```
def __get__(self, instance, owner):
print('self in Colour: %s ' % self )
print(self, ins, cls)
def __set__(self, instance, value):
pass
def __delete__(self, instance):
pass
class Flower:
#x=Colour()為Flower類的一個屬性
x =Colour()
def prt(self):
print('self in Flower: %s' % self)
調(diào)用:
t = Flower()
t.prt()
#只有對描述符對應(yīng)的類屬性進行操作時才會觸發(fā)描述符類的操作
t.x
結(jié)果:因為這里調(diào)用的是t.x,也就是說是Flower類的實例t的屬性x百新,由于實例t中并沒有定義屬性x企软,所以找到了類屬性x,而該屬性是描述符屬性饭望,為Colour類的實例而已仗哨,所以此處并沒有頂用Flower的任何方法。
self in Flower: <__main__.Flower object at 0x0000000002A570B8>
#在描述符類中铅辞,self指的是描述符類的實例
self in Colour: <__main__.Colour object at 0x000000000283E208>
<__main__.Colour object at 0x000000000283E208> <__main__.Flower object at 0x0000000002A570B8> <class '__main__.Flower'>