Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2019 11:59:13

fors-major
Зарегистрирован: 2019-08-31
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

Добрый день! Пытаюсь потренироваться в наследовании на классическом примере животных. Но у меня видимо пробел в функциях класса, потому, что неправильно передаю переменные наверно.
Код такой

 class Animal():
    def __init__(self, numberoflegs, speech, taillength, height, speed):
        self.numberoflegs = numberoflegs
        self.speech = speech
        self.taillength = taillength
        self.height = height
        self.speed = speed
    def move(self):
        distance = int(input("Enter the distance in KM"))
        time = distance / speed
        print(f'This animal passed the distance for {time}')
    def speak(self):
        print(f'This animal says {speech}')
    def dangerous(self, bigteeth):
        if bigteeth and height > 60:
            print('This animal is dangerous, be carefull')
        else:
            print('This animal is not dangerous, stay calm')
class Cat(Animal):
    def __init__(self, numberoflegs, speech, taillength, height, speed):
        super().__init__(numberoflegs, speech, taillength, height, speed)
class Dog(Animal):
    def __init__(self, numberoflegs, speech, taillength, height, speed):
        super().__init__(numberoflegs, speech, taillength, height, speed)
class Bird(Animal):
    def __init__(self, numberoflegs, speech, taillength, height, speed):
        super().__init__(numberoflegs, speech, taillength, height, speed)

Ругается так:
Undefined variable ‘speed’
Undefined variable ‘speech’
Undefined variable ‘height’

Но я же определил эти переменные, что я не так делаю

Офлайн

#2 Авг. 31, 2019 13:35:10

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

fors-major
Но я же определил эти переменные, что я не так делаю
Это где?

Возьмём функцию move(), локальные переменные distance и time определены, а локальная переменная speed где определена? Вы ранее определили атрибут класса self.speed, вот его и используйте. То же в других случаях.

Офлайн

#3 Авг. 31, 2019 17:12:06

CatGerman
Зарегистрирован: 2019-08-31
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

Доброго дня!
Подскажите, пожалуйста, как понимать такой код:

 class One():
   def __init__(self, ...):
      self._some = Two
      ...
...
  def method(self, second):
      return self._some(self.first, second)
...
class Two()

Что происходит? Как понять self._some = Two? И вот это self._some(self.first, second)

Офлайн

#4 Авг. 31, 2019 17:22:28

CatGerman
Зарегистрирован: 2019-08-31
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

А дальше еще и вот это:

  class One():
...
   def onemoremethod(self, p1, p2):
      return self.method(self[p1], self[p2])
...

Офлайн

#5 Авг. 31, 2019 17:30:47

CatGerman
Зарегистрирован: 2019-08-31
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

Все вместе:

  class One():
   def __init__(self, ...):
      self._some = Two
      ...
...
  def method(self, first, second):
      return self._some(self.first, second)
...
  def onemoremethod(self, p1, p2):
     return self.method(self[p1], self[p2])
...
class Two():
  def __init__(self, a1, a2):
....

Почему self._some = Two без скобок и как это интерпретировать??? self - ???

Офлайн

#6 Авг. 31, 2019 17:40:13

CatGerman
Зарегистрирован: 2019-08-31
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

Правильно я понимаю, что это вызов класса по ссылке и создание объекта происходит уже в method?
self - вызов какого-то метода класса Two?

Офлайн

#7 Авг. 31, 2019 17:40:34

CatGerman
Зарегистрирован: 2019-08-31
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

 self[p1], self[p2]

Офлайн

#8 Сен. 1, 2019 10:36:49

fors-major
Зарегистрирован: 2019-08-31
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание класса, наследование, совсем новичок

rami
Спасибо за помощь!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version