#python
#питон
Вопрос:
Я начинающий в Python и пытаюсь понять классы. В этом случае я не знаю, почему я не могу взять параметр «вес» из моего метода инициализации?
class Person: def __init__(self, weight): self.weight=weight def go_in(self, age,height): enter_to_disco= age*height*self.weight if enter_to_discolt;10: print('enter to disco') else: print(f'do not enter to disco') peter=Person.go_in(13,20,1)
это поднимает:
7 def go_in(self, age,height): 8 ----gt; 9 enter_to_disco= age*height*self.weight 10 if enter_to_discolt;10: 11 print('enter to disco') AttributeError: 'int' object has no attribute 'weight'
Комментарии:
1. Вы никогда не создаете экземпляр
Person
, и поэтомуPerson.__init__
он никогда не вызывается.2. Спасибо! понял.
3. Что — то вроде
Person(80).go_in(25, 190)
было бы ближе к тому, что вы хотите, если человек весит 80 кг, ему 25 лет и рост 190 см.4. @chepner да, так как вес должен быть в конструкторе. Я не заметил, что метод
go_in
принимает только два аргумента. Я удалил свой предыдущий комментарий.Person(80).go_in(25, 190)
это правильно.
Ответ №1:
Вам просто нужно создать свой объект, а затем вызвать метод:
class Person: def __init__(self, weight): self.weight=weight def go_in(self, age,height): enter_to_disco= age*height*self.weight if enter_to_discolt;10: print('enter to disco') else: print(f'do not enter to disco') Person(90).go_in(20,1)
Комментарии:
1. Поскольку
go_in
метод ничего не возвращает, возможно, было бы более полезно превратить последнюю строку в две строки:peter = Person(90)
, иpeter.go_in(20, 1)
.