У меня есть этот код, который хранит имя, возраст и средства человека. Я пытаюсь написать метод, который может принимать «возраст» или «фонды» вместе с числом и увеличивать данный атрибут на это число.Как изменить атрибут объекта с помощью метода?
class Actor:
def __init__(self, name, age, funds):
self.name
self.age = age
self.funds = funds
def increase_age(self, increase_amount=1):
self.age = self.age + increase_amount
def increase_attrib(self, attrib, increase_amount=1):
self.attrib = self.attrib + increase_amount
a = Actor("Andrea", 32, 10000)
a.increase_age()
работает отлично: называя это увеличивает возраст Андреа до 33, так же, как и ожидалось. Однако a.increase_attrib("age")
дает ошибку, говоря AttributeError: 'Actor' object has no attribute 'attrib'
. a.increase_attrib("funds")
дает аналогичные результаты.
Если я просто скажу a.increase_attrib(age)
(без кавычек), я получаю NameError, чего я ожидал.
По моему пониманию, что дает параметр "age"
к increase_attrib()
должно означать, что attrib
упоминается становится age
, так что ссылки increase_attrib()
self.age
вместо self.attrib
. Видимо, я ошибся.
Теперь я мог бы просто использовать increase_age()
, но тогда мне пришлось бы использовать разные методы для возраста и средств и даже больше методов, когда я добавлю другие функции в Actor
, например местоположение, пол и национальность.
Что мне нужно для того, чтобы передать имя атрибута методу и изменить его?
, которую вы после 'SetAttr (я, атр, GetAttr (self, attrib) + увеличение_amount) '? Если это так, см. Http://stackoverflow.com/q/1167398/3001761 – jonrsharpe