重新确认在__init__函数中声明的类实例属性的正确方法是什么?

时间:2018-10-13 23:17:52

标签: python python-3.x class object instance

我是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()

非常感谢您提供反馈,我们非常欢迎任何提示或建议,

安东尼

0 个答案:

没有答案