私はPython2.7のプログラムに取り組んでいて、同じクラス内のパラメーターとしてPythonクラスフィールドを渡そうとしていることに気づきました。コードをよりクリーンにするために(そしてそれによってこの構造の必要性を排除するために)コードを変更しましたが、それでも興味があります。
いくつかの例(非常に単純化されていますが、概念は存在します):
[注:例1と2の場合、数値を入力として取得してインクリメントするか、現在の値をインクリメントしたいとします。]
例1。
class Example:
def __init__(self,x):
self.value = x
def incr(self,x=self.value):
self.value = x + 1
結果:
"NameError: name 'self' is not defined"
例2。
class Example:
def __init__(self,x):
self.value = x
def incr(self,x=value):
self.value = x + 1
結果:
"NameError: name 'value' is not defined"
例3。
class Example:
def __init__(self,x):
ex2 = Example2()
self.value = ex2.incr(x)
def get_value(self):
return self.value
class Example2:
def __init__(self):
self.value = 0
def incr(self,x):
return x + 1
ex = Example(3)
print ex.get_value()
結果:
4
質問を言い換えると、Pythonクラスフィールドをパラメーターとして独自のメソッドに渡せないのはなぜですか?
他にご不明な点がある場合や、さらに詳しい情報が必要な場合はお知らせください。ありがとう!