2011-11-30 16 views
-2
class Test1: 
    def __init__(self): 
     self.x = 1 

class Test2(Test1): 
    # how can I get parent class's self.x ?? 
    # exactly here not def __init__(self) or other methods in Test2.. 

しばらくお待ちください...親クラスの自己を取得する方法を理解する時間を費やしました!失敗しました。 私はPythonの専門家が必要です!親クラス 'selfを取得するにはどうしたらいいですか?

+1

「親クラスのself.x」が必要な理由を説明できますか? – seb

答えて

2

このようなものが欲しいですか?

class Test1: 
    def __init__(self): 
     self.x = 1 

class Test2(Test1): 
    def __init__(self): 
     Test1.__init__(self) 
     print self.x 

a = Test2() 

Test2オブジェクトにはx属性があるため、Test2内ではself.xにアクセスできます。これは、Test1初期化子で作成されます。

編集:著者が私の誤解を説明した後、xはインスタンスメンバーであり、クラス1ではないので、何が求められるのかは分かりません。ゲッコの答えを見てください。

+0

申し訳ありません..いいえ、それは私が意味するものではありません.. ... "def __init __(self)"ではなくクラス定義部分.. "class Test2" – Anderson

+0

次にgeccoの答えが正しいです。 –

+0

ありがとうございました。 Thiago Chaves – Anderson

2

これはできません。 self.xはインスタンス変数です。インスタンス変数は、instance-methods内からのみアクセスできます。外部メソッドは静的コンテキストにあります。

あなたがこの(純粋なクラス変数(インスタンスではなく))を行うことができます。

class Test1: 
    x = 1 

class Test2: 
    y = Test1.x 
+0

ありがとう..うーん。私は別の方法を見つける必要があります..多くのありがとう。 – Anderson

2

クラス定義の時点で、そこにはオブジェクトがありませんので、何もselfありません - selfは内側のみ意味を持ちますメンバー関数。とにかく、クラス定義でself.xで何をしたいですか?

+0

実際..私はこれを考え出しています.. [link](http://stackoverflow.com/questions/8326361/using-key-as-value-in-mongoengine)おそらく、それはいくつかのハッキングを必要とするでしょう。 – Anderson

+0

@WebEngineer:この質問は分かりにくいですが、私が見る限り、これを解決するにはメタクラスを調べなければなりません。 –

+0

ありがとうございました。 Bjorn Pollex。 – Anderson

関連する問題