Подтвердить что ты не робот

Класс с объектом как параметр

Я пытаюсь перевести код python на код scala. Так что я полный noob в Python.

Но почему некоторые классы имеют объект как параметр, но никогда явно не используют его? Какова аргументация наличия в качестве параметра в первую очередь?

Пример:

class Table(object)

Спасибо за ваше время.

4b9b3361

Ответ 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) - это просто наследование.!