Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.217.134] |
|
Сообщ.
#1
,
|
|
|
на Python 3.7 OK
class Person(): def __init__(self, name, age): self.name = name self.age = age class JavaDrocher(Person): def __init__(self, name, age, grade): super().__init__(name, age) self.grade = grade gregory = JavaDrocher('Gregory', 42, 10) но в Python 2.7 не работает! Пробовал вот так class JavaDrocher(Person): def __init__(self, name, age, grade): super(JavaDrocher, self).__init__(name, age) # не работает! self.grade = grade gregory = JavaDrocher('Gregory', 42, 10) ошибка 'TypeError: must be type, not classobj' |
Сообщ.
#2
,
|
|
|
Думаю надо
class Person(object): |
Сообщ.
#3
,
|
|
|
Цитата piksel @ В Python 3000 (версии 3.*) разницы нет, оба определения эквивалентны. В 2.7, помнится, существуют две разновидности классов legasy - унаследованные от старых версий, и новые, подобные классам Python 3000. Соответственно отличается и наследование. Правда, чем отличается их определение, уже не помню. ибо без object -- старый стиль определения класса |
Сообщ.
#4
,
|
|
|
Цитата piksel @ Думаю надо class Person(object): Бинго! Спасибо! Заработало! Цитата in Python 2 we have to inherit from object explicitly, otherwise our class will be almost completely empty except for our own custom properties. Classes which don’t inherit from object are called “old-style classes”, and using them is not recommended. If we were to write the person class in Python 2 we would write the first line as class Person(object):. Цитата в Python 2 мы должны явно наследовать object, иначе наш класс будет почти полностью пуст, за исключением наших собственных пользовательских свойств. Классы, которые не наследуются object, называются "классами старого стиля", и их использование не рекомендуется. Если бы мы написали класс person в Python 2, мы бы написали первую строку как class Person(object): https://python-textbok.readthedocs.io/en/1.0/Classes.html |
Сообщ.
#5
,
|
|
|
Еще один способ вызвать метод предка
class JavaDrocher(Person): def __init__(self, name, age, grade): Person.__init__(self, name, age) self.grade = grade Где-то я уже похожее видел догадайтесь где |