Как получить доступ к переменным подфункции в классе? - PullRequest
0 голосов
/ 30 апреля 2020

У меня проблемы с вызовом переменной вне подфункции:

class ABC():
    def ___init___(self):
        function_A()
        function_B()
    def function_A(self):
        self.A = 5
        def subfunction_of_A(self):
            self.B = 2
            self.function_B()
        subfunction_of_A()
    def function_B(self):
        C = self.B

 Start = ABC()

Я всегда получаю сообщение об ошибке: 'ABC' object has no attribute 'B' для C = self.B

Как я могу сделать себя. B доступен снаружи?

Большое спасибо:)

------- РЕДАКТИРОВАТЬ / ОБНОВИТЬ ---------- Хорошо, я думаю, что мне может понадобиться обновить мой вопрос немного:

class ABC():
    def ___init___(self):
        self.function_A()
        self.function_B()
    def function_A(self):
        self.A = 5
        def subfunction_of_A(self):
            self.B = 2
        subfunction_of_A(self)
        print(self.B) # This prints 2 and works as it should!
    def function_B(self):
        C = self.B # In this line I receive the error that ABC.B does not exist --> Why is that?

 Start = ABC()

1 Ответ

2 голосов
/ 30 апреля 2020

edit:

class ABC():
    def __init__(self):
        self.function_A()
        self.function_B()
    def function_A(self):
        self.A = 5
        def subfunction_of_A(self):
            self.B = 2
        subfunction_of_A(self)
    def function_B(self):
        print(self.B) # This prints 2 and works as it should!
        C = self.B

Start = ABC()

на этот раз ваша проблема в том, что ваш ___init___ имеет 3 подчеркивания вместо 2 ... __init__

предыдущий ответ:

вы никогда не вызываете свою «подфункцию»

class ABC():
    def function_A(self):
        self.A = 5
        def subfunction_of_A(self):
            self.B = 2
        subfunction_of_A(self) # notice this line

    def function_B(self):
        self.C = self.B


abc = ABC()
abc.function_A()
abc.function_B()
print(abc.C) # prints 2

единственный способ установить B - это запустить эту функцию, даже если ее вложенная ... ее странный способ создать класс, но там вы go

...