使用できるクラス名の文字列表現を取得するには、obj.__class__.__name__
これらのメソッドをオーバーロードして、実際のクラス名の代わりに文字列を返すことができますか?
質問する
8073 次
3 に答える
7
やってみよう!(はい、これは機能します):
>>> 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__
はあなたの質問と一致していたものです。
于 2012-08-01T23:33:10.503 に答える
5
うん。
class A:
def __init__(self):
self.__class__.__name__ = 'B'
しかし、これは悪い考えのようです。
于 2012-08-01T23:32:05.137 に答える
3
あなたはこれを行うことができます:
>>> 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__
于 2012-08-01T23:34:48.440 に答える