Класс с объектом как параметр
Я пытаюсь перевести код python на код scala. Так что я полный noob в Python.
Но почему некоторые классы имеют объект как параметр, но никогда явно не используют его? Какова аргументация наличия в качестве параметра в первую очередь?
Пример:
class Table(object)
Спасибо за ваше время.
Ответы
Ответ 1
В Python2 это объявляет Table
класс нового стиля (в отличие от класса "классический" ).
В Python3 все классы являются классами нового стиля, поэтому это больше не нужно.
В классах нового стиля есть несколько специальных атрибутов, которые отсутствуют в классических классах.
class Classic: pass
class NewStyle(object): pass
print(dir(Classic))
# ['__doc__', '__module__']
print(dir(NewStyle))
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
Кроме того, свойства и super не работать с классическими классами.
В Python2 рекомендуется создавать классы классов нового класса. (Хотя многие классы в стандартной библиотеке по-прежнему являются классическими классами, ради обратной совместимости.)
В общем, в утверждении типа
class Foo(Base1, Base2):
Foo
объявляется как класс, наследующий от базовых классов Base1
и Base2
.
object
является матерью всех классов в Python. Это класс нового стиля, поэтому наследование от object
делает Table
класс нового стиля.
Ответ 2
Класс Table
расширяет класс под названием object
. Это не аргумент. Причина, по которой вы можете явно расширить object
, превращает класс в класс нового стиля. Если вы явно не укажете, что он расширяет object
, до Python 3 по умолчанию он будет классом старого стиля. (Начиная с Python 3, все классы являются новыми, независимо от того, явно ли вы расширяете object
или нет.)
Для получения дополнительной информации о классах нового стиля и старого стиля, пожалуйста, см. этот вопрос.
Ответ 3
класс Таблица и класс Таблица (объект) не отличается для Python.
Это не параметр, простирающийся от объекта (который является базовым классом, как и многие другие языки).
Все, что он говорит, это то, что он наследует все, что определено в "объекте". Это поведение по умолчанию.
Ответ 4
Просто обратите внимание, что различие классов "новый стиль" и "старый стиль" относится к Python 2.x; в 3.x все классы являются "новыми".
Ответ 5
1) Имя класса (объект): 2) имя класса:
Они оба одинаковы, но вначале они выглядят лучше с точки зрения написания, они выглядят лучше, унаследовав другие классы к другому, и я выгляжу однородным.
Как же?
Итак, каждая вещь в Python попадает под объект, потому что все вещи в Python имеют свойство объекта, если они пишут или не понимают его.
Сначала мы явно говорим об этом во втором, мы этого не сделали.
Ответ 6
object - это самый базовый тип объекта класса, определенный в python.
Атрибуты объекта можно увидеть ниже
** → > dir (object)
[' класс ", delattr', ' doc', ' формат', ' getattribute ',' хеш ',' init ', новый', <. > ',' reduce_ex ',' repr ',' setattr ',' sizeof ',' str ',' subclasshook '] **
Итак, Table (object) - это просто наследование.!