我想为某个类别的实例repr(x)
自定义x
的输出。 (FWIW,这些类继承自long
。)
我已经使用元类来控制这些类的其他方面。有没有办法可以将自定义repr
行为作为元类定义的一部分包含在内?
答案 0 :(得分:3)
也许您正在寻找类似的东西:
class Meta(type):
def __new__(cls, clsname, clsbase, clsdict):
newcls = super().__new__(cls, clsname, clsbase, clsdict)
def custom_repr(self):
return '{}, Custom __repr__'.format(clsname)
newcls.__repr__ = custom_repr
return newcls
class Foo(metaclass=Meta):
pass
Python 2.X:
class Meta(type):
def __new__(cls, clsname, clsbase, clsdict):
newcls = super(Meta, cls).__new__(cls, clsname, clsbase, clsdict)
def custom_repr(self):
return '{}, Custom __repr__'.format(clsname)
newcls.__repr__ = custom_repr
return newcls
class Foo(object):
__metaclass__ = Meta
例如:
>>> Foo()
Foo, Custom __repr__
>>>