Как правильно переопределить атрибуты класса, объявленные в функции __init__? - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в 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()

Спасиботак что для обратной связи любые советы или советы очень приветствуются,

Антоний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...