Вызов одной из нескольких переменных из метода вне или внутри класса - PullRequest
0 голосов
/ 10 июля 2020

Я пытался поискать, но не нашел ответа.

это мой код -

class abcd():
    def __init__(self):
        pass
    def call_from_method_1(self):
        self.a = "value of variable a"
        self.b = 'value of variable b'
        print(self.a + ',', self.b)

    def call_from_method_2(self):
        self.c = 'var c'
        self.d = 'var d'

    def call_specific_variable_from_each_method(self):
        return abcd().call_from_method_1()               # in this line how do I call just the variable b
        return abcd().call_from_method_2()               # and in this line call just d

if True:
    abcd().call_specific_variable_from_each_method()         #so I could print them both in this line

Мне нужно вызвать ТОЛЬКО переменную b из def call_from_method_1(self): и ТОЛЬКО переменную d из def call_from_method_2(self): и вызовите их в def call_specific_variable_from_each_method(self):. Я также должен сохранить оба метода нетронутыми, если это возможно, поэтому, если я создам экземпляры методов, он также распечатает print(self.a + ',', self.b) из call_from_method_1(self):, что нежелательно.

Как уже упоминалось, оба метода должны быть неповрежденными и по-прежнему печатать только специфицированная c переменная из любого метода вне класса без необходимости полностью запускать оба метода, создавая их экземпляры.

Также в качестве бонуса, как использовать оператор if в понимании списка, чтобы окончательно вызвать класс? поэтому я попробовал abcd().call_specific_variable_from_each_method() if True, но не работает. Есть идеи?

Это действительно поможет, если решение не является обходным путем. Но я открыт для любых решений.

1 Ответ

0 голосов
/ 10 июля 2020

Ваш код не будет работать как есть.

Во-первых, вам нужно создать экземпляр класса abcd для вызова методов.

Во-вторых, в call_specific_variable_from_each_method(self): вы возвращаете вызовы abcd () .... Они просто собираются вернуть None. Вы ничего не вернули ни одним из методов. В-третьих, этот вызов возвращает только первое значение None.

class abcd():

    def __init__(self):
        self.call_from_method_1()
        self.call_from_method_2()

    def call_from_method_1(self):
        self.a = "value of variable a"
        self.b = 'value of variable b'
        return self.b

    def call_from_method_2(self):
        self.c = 'var c'
        self.d = 'var d'
        return self.d

    def call_specific_variable_from_each_method(self):
        return self.call_from_method_1(), self.call_from_method_2()


abcd_obj = abcd()
b, d = abcd_obj.call_specific_variable_from_each_method()
print(b, d)
...