创新路
我们一直在努力

python描述符

对象属性的访问顺序:

1.实例属性

2.类属性

3.父类属性

4.__getattr__()方法

示例:

 class Desc(object):

      

      def __get__(self, instance, owner):

          print("__get__…")

          print("self : \t\t", self)

          print("instance : \t", instance)

          print("owner : \t", owner)

         print('='*40, "\n")

         

     def __set__(self, instance, value):

         print('__set__…')

         print("self : \t\t", self)

         print("instance : \t", instance)

         print("value : \t", value)

         print('='*40, "\n")

 

 class TestDesc(object):

     x = Desc()

 

 #以下为测试代码

 t = TestDesc()

 t.x

 #以下为输出信息:

 __get__…

 self :          <__main__.Desc object at 0x0000000002B0B828>

 instance :      <__main__.TestDesc object at 0x0000000002B0BA20>

 owner :      <class '__main__.TestDesc'>

实例化类TestDesc后,调用对象t访问其属性x,会自动调用类Desc的 __get__方法,由输出信息可以看出:

  # self: Desc的实例对象,其实就是TestDesc的属性x

  # instance: TestDesc的实例对象,其实就是t

  # owner: 即谁拥有这些东西,当然是 TestDesc这个类,它是最高统治者,其他的一些都是包含在它的内部或者由它生出来的

未经允许不得转载:天府数据港官方信息博客 » python描述符

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机