8

例:

class Class1:
    def __init__(self):
        self.x = Class2('Woo!')

class Class2:
    def __init__(self, word):
        print word

meow = Class1()

self.xインスタンスを作成したクラス名を取得するにはどうすればよいですか?つまり、インスタンスself.xが与えられた場合、「Class1」という名前を取得するにはどうすればよいですか?使用self.x.__class__.__name__すると、明らかにClass2の名前しか得られません。これも可能ですか?ありがとう。

4

3 に答える 3

5

'creator'のインスタンスをClass2()コンストラクターに渡さない限り、できません。例えば

class Class1(object):
    def __init__(self, *args, **kw):
        self.x = Class2("Woo!", self)

class Class2(object):
    def __init__(self, word, creator, *args, **kw):
        self._creator = creator
        print word

これにより、クラス間に逆リンクが作成されます

于 2009-10-20T10:18:23.253 に答える
1

メソッド内の問題のクラスに変数を設定し、__init__()後で取得します。

より良い質問をすると、より良い答えが得られます。これはかなり不明確です。

于 2009-10-20T10:14:43.463 に答える
0

あなたの質問はここで答えられるのと非常に似ています。コンストラクターで誰がインスタンスを作成したかは決定できますが、後で決定することはできないことに注意してください。とにかく、最良の方法は、作成者をコンストラクターに明示的に渡すことです。

于 2009-10-20T10:25:37.230 に答える