Python类表示的方法

我知道方法__repr__和__str__存在,以提供类实例的正式和非正式表示.但是对于类对象是否也存在等价物,因此当打印类对象时,可以显示它的一个很好的表示?

>>> class Foo:
...     def __str__(self):
...         return "instance of class Foo"
...
>>> foo = Foo()
>>> print foo
instance of class Foo
>>> print Foo
__main__.Foo

最佳答案:

当你调用print(foo)时,会调用foo的__str__方法. __str__在foo类中找到,即Foo.

类似地,当你调用print(Foo)时,会调用Foo的__str__方法. __str__位于Foo类中,通常是类型.您可以使用元类更改它:

class FooType(type):
    def __str__(cls):
        return 'Me a Foo'
    def __repr__(cls):
        return '<Foo>'

class Foo(object):
    __metaclass__=FooType
    def __str__(self):
        return "instance of class Foo"

print(Foo)
# Me a Foo

print(repr(Foo))
# <Foo>
上一篇:Android 设计模式入门到精通之二十三:解释器模式(Interpreter Pattern)


下一篇:CF1508F. Optimal Encoding