我有一个类:
class MyClass:
Foo = 1
Bar = 2
每当调用 MyClass.Foo
或 MyClass.Bar
时,我需要在返回值之前调用自定义方法。在 Python 中有可能吗?我知道如果我创建该类的一个实例并且我可以定义我自己的 __getattr__
方法是可能的。但是我的场景涉及使用此类而不创建它的任何实例。
我还需要一个自定义 __str__
调用 str(MyClass.Foo)
时调用的方法。 Python 是否提供这样的选项?
原文由 Tuxdude 发布,翻译遵循 CC BY-SA 4.0 许可协议
__getattr__()
和__str__()
一个对象在它的类中找到,所以如果你想为一个类定制这些东西,你需要类的类。一个元类。印刷:
不,对象不能拦截对其属性之一进行字符串化的请求。为属性返回的对象必须定义自己的
__str__()
行为。