Наследование параметров от метода инициализации в классе Python

#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) .