Alo*_*kur 12 python oop class python-2.7 python-3.x
我知道我们可以重载类实例的行为,例如 -
class Sample(object): pass
s = Sample()
print s
<__main__.Sample object at 0x026277D0>
print Sample
<class '__main__.Sample'>
Run Code Online (Sandbox Code Playgroud)
我们可以改变结果print s:
class Sample(object):
def __str__(self):
return "Instance of Sample"
s = Sample()
print s
Instance of Sample
Run Code Online (Sandbox Code Playgroud)
我们可以改变结果print Sample吗?
Mik*_*ler 10
您可以使用元类:
class SampleMeta(type):
def __str__(cls):
return ' I am a Sample class.'
Run Code Online (Sandbox Code Playgroud)
Python 3:
class Sample(metaclass=SampleMeta):
pass
Run Code Online (Sandbox Code Playgroud)
Python 2:
class Sample(object):
__metaclass__ = SampleMeta
Run Code Online (Sandbox Code Playgroud)
输出:
I am a Sample class.
Run Code Online (Sandbox Code Playgroud)
元类是类的类.它与类的关系类似于实例的类.使用相同的class陈述.继承表单type而不是object使其成为元类.按照惯例self取而代之的是cls.
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |