我知道我们可以重载类实例的行为,例如-
class Sample(object): pass s = Sample() print s <__main__.Sample object at 0x026277D0> print Sample <class '__main__.Sample'>
我们可以更改的结果print s:
class Sample(object): def __str__(self): return "Instance of Sample" s = Sample() print s Instance of Sample
我们可以更改结果print Sample吗?
您可以使用元类:
class SampleMeta(type): def __str__(cls): return ' I am a Sample class.'
Python 3:
class Sample(metaclass=SampleMeta): pass
Python 2:
class Sample(object): __metaclass__ = SampleMeta
输出:
I am a Sample class.
元类是类的类。它与类的关系类似于类与实例的关系。使用相同的class语句。type而是从继承表单object使其成为一个元类。按惯例self由代替cls。