gpt4 book ai didi

python - 如何提供 python 类(不是实例)的非正式字符串表示

转载 作者:太空狗 更新时间:2023-10-29 22:08:25 27 4
gpt4 key购买 nike

我了解如何提供对象实例的非正式表示,但我有兴趣提供类名称的非正式字符串表示。

具体来说,我想覆盖打印类 (__main__.SomeClass) 时返回的内容。

>>> class SomeClass:
... def __str__(self):
... return 'I am a SomeClass instance.'
...
>>> SomeClass
<class __main__.SomeClass at 0x2ba2f0fd3b30>
>>> print SomeClass
__main__.SomeClass
>>>
>>> x = SomeClass()
>>> x
<__main__.SomeClass instance at 0x2ba2f0ff3f38>
>>> print x
I am a SomeClass instance.

最佳答案

您的问题称为元类混淆。对于类A,如果A.__str__(self) 是A 实例方法的模板,我如何为A 本身提供方法__str__()?元类来拯救。

以下链接比我在这里更好地解释了这一点。

http://gnosis.cx/publish/programming/metaclass_1.html

http://gnosis.cx/publish/programming/metaclass_2.html

这里有一个简短的例子:

class AMeta(type):
def __str__(self):
return "I am the truly remarkable class A"

class A(object):
__metaclass__ = AMeta
def __str__(self):
return "I am an A instance"

print A
I am the truly remarkable class A
print A()
I am an A instance

顺便说一句,您可以为 __repr__ 做同样的事情。

关于python - 如何提供 python 类(不是实例)的非正式字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com