zoukankan      html  css  js  c++  java
  • __class__属性与元类

     1 class M(type):
     2     def __str__(self):
     3         return "gege"
     4     aa = "ccf"
     5     cc = "ccc"
     6 
     7 class TM:
     8     cc = "ddd"
     9     __metaclass__ = M
    10 print (TM.__class__)#<class '__main__.M'>
    11 a = TM()
    12 print (TM.__metaclass__.cc)#ccc
    13 print (TM.aa)#ccf
    14 print (TM.cc)#ddd
    15 #print (a.aa) #error

    class属性类似于以上例子中的__metaclass__

    实例.__class__等价于实例的所属类

    回过头来补充说明。

    继承type类的类就是元类,而我们新创建一个类,__metaclass__可以指定这个类是哪个元类的对象,如果不指定,则默认是type类的对象

    更新:

    类与类的类,跟实例与类,这两个对应还是有点区别的。

    就比如上面那个例子,类TM的类M具备aa属性,我们用dir(TM)是看不到aa属性的,用hasattr(TM,"aa"),返回的也是false,但这不妨碍TM可以调用aa属性,只不过,TM的实例不能调用aa属性。

    而一般的实例与类,只要类中具备的属性,用dir(实例)查看都能看到

  • 相关阅读:
    网络编程
    并发编程-线程池
    并发编程-集合
    并发编程-AQS
    并发编程-CAS
    并发编程-volatile和synchronized的区别
    并发编程-synchronized
    并发编程-java内存模型
    JVM-分代垃圾回收器
    性能优化
  • 原文地址:https://www.cnblogs.com/saolv/p/8415925.html
Copyright © 2011-2022 走看看