После того, как вы заявляете self.food
или self.water
, эти атрибуты всего объекта, а не только метод, который они были объявлены в. до тех пор пока вы разбираете self
к новому методу класса , он может получить доступ ко всем атрибутам объект с помощью ссылки self.food
, self.water
и т.д. Например:
class feed(object):
# other functions
def new_method(self):
#This can now reference other object attributes
Однако, как отметил @jonrsharpe в комментариях, убедитесь, что порядок, в котором выполняются методы не приводят к способу пытается ссылаться атрибут, который еще не был объявлен. Хорошей практикой является определение всех атрибутов в методе __init__
класса. В настоящее время вы не объявляете self.water
перед вызовом self.water += 1
, что поднимет AttributeError
из-за того, что атрибут self.water
ссылается перед назначением. Вот как это сделать:
class feed(object):
def __init__ (self, food = 0, water = 0) :
self.food = food
self.water = water
def fill(self):
self.food += 1
self.water += 1
Вы просто * пробовали делать это *? Если у вас есть методы с использованием атрибутов, которые не были определены в '__init__', что, если они выполняются в другом порядке с тем, который вы ожидаете? Также обратите внимание, что это 'class' (Python чувствителен к регистру), и вы должны прочитать https://www.python.org/dev/peps/pep-0008/ – jonrsharpe
Вопрос для меня совершенно неясен. – timgeb
@timegeb это так просто, как это ... создать другой метод и найти способ включить атрибут «вода» (атрибут метода «fill») в методе – Qudus