Я новичок в python, и мне сложно найти лучший способ переназначения переменных, объявленных в функции init (в смысле читабельности и логики).Я использую Python 3.6.4
У меня есть функция callMyclass (), которая создает экземпляр передачи Myclass (atr1, atr2).затем он вызывает main_loop, чтобы присвоить новые значения атрибутам экземпляра, объявленным в init .
Является ли наилучшей практикой присваивать атрибуты Instance только внутри main_loop (), или допустимо переназначать self.attr3 в foo2 ()?Также есть ли лучшая альтернатива для выполнения, которую я пытаюсь сделать?
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()
Спасиботак что для обратной связи любые советы или советы очень приветствуются,
Антоний