オブジェクト指向 Python を学習しようとしていますが、オブジェクト属性がインスタンス化された後のスコープについて疑問があります。そこで、非常に単純なプログラムを作成することにしました。
class Struct:
def __init__(self):
self.resadd=[]
self.ressub=[]
self.resmul=[]
class MathStruct:
def mathss(self,x,y):
add=x+y
sub=x-y
mul=x*y
resstruct.resadd.append(add)
resstruct.ressub.append(sub)
resstruct.resmul.append(mul)
if __name__=='__main__':
resstruct=Struct()
for i in range(10,20):
mathsstuff=MathStruct()
mathsstuff.mathss(i,5)
print len(resstruct.resadd),resstruct.resadd
print len(resstruct.ressub),resstruct.ressub
print len(resstruct.resmul),resstruct.resmul
ご覧のとおり、プログラムは非常に単純ですが、ここで質問があります。resstruct=Struct() を使用して「結果」オブジェクトをインスタンス化し、次に resstruct.resadd、resstruct.ressub、および resstruct.resmul 属性を使用します。 「数学」関数。これは合法ですか(正しい答えが得られます!)?これは、他の関数内でもオブジェクトの属性を使用できるということですか?
通常、関数から値を返し、それを object 属性に追加しますが、別の関数内で object 属性を直接変更できることに (嬉しいことに) 驚きました。
..一言で言えば、私の質問は、インスタンス化された後のオブジェクト属性のスコープは何ですか? これが101の質問である場合は申し訳ありません。