2016-04-03 10 views
-1

クラスから別の値に値を渡そうとしているので、第1クラスと第2クラスのコンストラクタ間で値を渡しても問題ありません。しかし、クラスコンストラクタからいくつかの値にアクセスしようとするたびに、その変数がメソッドによって取得されているように見えません。ここではその後python:クラスと外部のコンストラクタの間で値を渡す

from file2 import * 
class Bar(): 
    def __init__(self, foo): 
     self.var = foo.h 
     print("+++++++++++++++++++++++++") 
     print(self.var) 
    def function(): 
     print" the values is : ",self.var 
    function() 
b = Bar(Foo()) 

私file2.pyコードは次のとおりです:

class Foo(): 
    def __init__(self): 
     self.x = 6 
     self.y = 2 
     self.h = self.x+self.y 

私は内部の値を取得しようとするたびにという私の問題ここで

はFooクラスが含まれているfile1.pyという名前のファイルがありますfunction()私はこの部分で立ち往生しています。エラー出力:

print" the values is : ",self.var 
NameError: global name 'self' is not defined 
+1

関数 'def'は字下げする必要があります。そうでなければ、クラス定義の一部ではありません。 – Jens

+0

@Jens - 私はコピーペーストエラーだと思います。コードがそういうものでコンパイルされないからです。 – TigerhawkT3

+0

@ TigerhawkT3: 'def関数()'については分かりませんが、 '__init__'のために私は同意します。 – Jens

答えて

0

2つの問題があります。まず、functionがインスタンスメソッドであるため、selfパラメータが必要です。第二に、あなたはfunction()をクラス定義の一部として呼び出していますが、私はその理由を知りません。私はそれがメンバーメソッドであると考え、インスタンスが作成された後に呼び出される必要があります。

from file2 import * 
class Bar(): 
    def __init__(self, foo): 
     self.var = foo.h 
     print("+++++++++++++++++++++++++") 
     print(self.var) 
    def function(self): 
     print " the values is : ",self.var 

b = Bar(Foo()) 
b.function() 
+0

実際に私は関数で自己を使用する必要がありますが、コードの下にこの2行だけを入力してください。 b = Bar(Foo()) function() b.function()を忘れてしまいました ありがとう!! ! –

関連する問題