Python 3: обмен переменными между методами в классе - PullRequest
2 голосов
/ 06 октября 2011

Поиск того, как сделать переменную, установленную одним методом / функцией в классе, доступной для другого метода / функции в том же классе, не прибегая к избыточному (и проблемному коду) снаружи.

Вот пример, который не работает, но может показать вам, что я пытаюсь сделать:

#I just coppied this one to have an init method
class TestClass(object):

    def current(self, test):
        """Just a method to get a value"""
        print(test)
        pass

    def next_one(self):
        """Trying to get a value from the 'current' method"""
        new_val = self.current_player.test
        print(new_val)
        pass

Ответы [ 2 ]

9 голосов
/ 06 октября 2011

Вы устанавливаете его одним способом, а затем ищите его другим:

class TestClass(object):

    def current(self, test):
        """Just a method to get a value"""
        self.test = test
        print(test)

    def next_one(self):
        """Trying to get a value from the 'current' method"""
        new_val = self.test
        print(new_val)

Как примечание, вы должны установить self.test, прежде чем пытаться получить его. В противном случае это приведет к ошибке. Я обычно делаю это в __init__:

class TestClass(object):

    def __init__(self):
        self.test = None

    def current(self, test):
        """Just a method to get a value"""
        self.test = test
        print(test)

    def next_one(self):
        """Trying to get a value from the 'current' method"""
        new_val = self.test
        print(new_val)
0 голосов
/ 06 октября 2011

Это то, что вы пытаетесь сделать?

#I just coppied this one to have an init method
class TestClass(object):

    def current(self, test):
        """Just a method to get a value"""
        print(test)
        self.value = test
        pass

    def next_one(self):
        """Trying to get a value from the 'current' method"""
        new_val = self.value
        print(new_val)
        pass

a = TestClass()
b = TestClass()
a.current(10)
b.current(5)
a.next_one()
b.next_one()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...