Python. Проброс значения функции внутри класса

Рейтинг: 0Ответов: 1Опубликовано: 26.07.2023

Такой вопрос: есть значение, которое вычисляется в функции внутри класса. Никак не могу сообразить, как мне пробросить вычисленное значение в другую функцию.

Для примера того, что я пыталась сделать, вот такой код:

class Test:
    def __init__(self):
        self.name = ''

    @staticmethod
    def inp():
        name = input()
        return name

    @staticmethod
    def pr():
        print(name)


random_name = Test()
random_name.inp()
random_name.pr()

@staticmethod я использую т.к. мне нужен такой подход для автотестов.

Буду благодарна за дельный совет, как пробросить значение, вычесленное в функции один в функцию два. ❤️

Ответы

▲ 2

Что-то масло масленное получилось.
Вас не смущает ошибка?

NameError: name 'name' is not defined

Тут два варианта:

  1. Либо использовать атрибут, и тогда надо прокидывать self везде:

    class Test:
        def __init__(self):
            self.name = ''
    
        def inp(self):
            self.name = input()
    
        def pr(self):
            print(self.name)
    

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

  2. Либо использовать классовую переменную:

    class Test:
        name = ''
    
        @staticmethod
        def inp():
            Test.name = input()
    
        @staticmethod
        def pr():
            print(Test.name)
    

    Так методы останутся статичными, и никакого self не надо, переменная сохранится в классе, а не в экземпляре.