我是python的新手,很难找到重新分配init函数中声明的变量的最佳方法(就可读性和逻辑而言)。我正在使用Python 3.6.4
我有一个函数callMyclass(),该函数创建Myclass传递实例(atr1,atr2)。 然后调用main_loop为在 init 中声明的实例属性分配新值。
最佳做法是仅在main_loop()内部分配实例属性,还是可以在foo2()中重新分配self.attr3?同样,还有其他更好的方法可以完成吗?
def callMyclass():
instance1 = Myclass(attr1,attr2) #create instance
instance1.main_loop()
class Myclass:
def __init__(attr1,attr2):
self.attr1 = attr1
self.attr2 = attr2
self.attr3 = 0
def foo1(self, attr1, attr2):
attr1 += attr2 #method1
return attr1 #return local attr1 to mainloop
def foo2(self, attr3): #method2
attr3 = attr3 + 3 #assaign instance attr3 here
self.attr3 = attr3
def main_loop(self):
self.attr1 = self.foo1(attr1, attr2) #method1
self.foo2(attr3) #method2
#option1: assign new value to instance attr inside main
#option2: call function to change instance attr
我的脚本结构更好的例子。我有一个带有main_loop()函数的类来调用函数A(),B(),C()...等。
函数A()查找实例属性的新值。 我在函数A()中分配了这些属性。
另一种方法是将这些变量返回到main_loop,然后从一个位置为实例属性分配新值。
Class1
def __init__():
self.a = 1
self.b = 2
self.c = 3
def A(self)
def nested_a(a):
a += 1
return a
def nested_b(b):
b = b * 2
return b
def nested_c(c):
c = c/ 3
return c
self.a = nested_a(a)
self.b = nested_b(b)
self.c = nested_c(c)
def main_loop(self):
self.def A()
analysis = Class1()
analysis.main_loop()
非常感谢您提供反馈,我们非常欢迎任何提示或建议,
安东尼