我正在尝试学习 OO 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 中的属性“数学”功能。这合法吗(我得到了正确的答案!)?这是否意味着即使在其他功能中也可以使用对象属性?
通常,我会从函数返回值,然后将其附加到对象属性,但我(令人愉快地)惊讶地发现我可以直接在另一个函数中修改对象属性。
..简而言之,我的问题是对象属性在实例化后的范围是什么?对不起,如果这是一个 101 问题。