要获取类名的字符串表示,我们可以使用obj.__class__.__name__
是否可以重载这些方法,以便我可以返回我的字符串而不是实际的类名?
答案 0 :(得分:5)
是的。
class A:
def __init__(self):
self.__class__.__name__ = 'B'
但这似乎是一个坏主意。
答案 1 :(得分:5)
我们试试吧! (是的,这有效):
>>> class Foo(object):
... pass
...
>>> obj = Foo()
>>> obj.__class__.__name__ = 'Bar'
>>> obj
<__main__.Bar object at 0x7fae8ba3af90>
>>> obj.__class__
<class '__main__.Bar'>
您刚刚完成Foo.__name__ = 'Bar'
,我使用obj.__class__.__name__
与您的问题保持一致。
答案 2 :(得分:2)
你可以这样做:
>>> class Foo(object):
... def __init__(self):
... self.__class__.__name__ = "Bar"
...
>>> print Foo().__class__.__name__
Bar
或者您可以创建自己的双下划线属性。
>>> class Foo(object):
... __name__ = "Bar"
...
>>> print Foo().__name__
Bar
但你为什么要这样做呢?我认为没有任何可能的用途。顺便说一句,我意识到这与__class__.__name__
不一样,但我认为改变__class__.__name__
通常不是一个好主意。