Can we overload behavior of class object
本问题已经有最佳答案,请猛点这里访问。
我知道我们可以重载类实例的行为,例如-
1 2 3 4 5 6 | class Sample(object): pass s = Sample() print s <__main__.Sample object at 0x026277D0> print Sample <class '__main__.Sample'> |
我们可以改变
1 2 3 4 5 6 | class Sample(object): def __str__(self): return"Instance of Sample" s = Sample() print s Instance of Sample |
我们能改变
可以使用元类:
1 2 3 | class SampleMeta(type): def __str__(cls): return ' I am a Sample class.' |
Python 3:
1 2 | class Sample(metaclass=SampleMeta): pass |
Python 2:
1 2 | class Sample(object): __metaclass__ = SampleMeta |
输出:
1 | I am a Sample class. |
元类是类的类。它与类的关系类似于类与实例的关系。使用相同的