Я пытаюсь перевести код Python в код Scala. Так что я полный новичок в Python.
Но почему некоторые классы имеют объект в качестве параметра, но никогда не используют его явно? Какова причина использования этого параметра в первую очередь?
Пример:
class Table(object)
Спасибо за уделенное время.
Ответы:
В python2 это декларирует
Table
быть классом нового стиля (в отличие от «классического» класса). В Python3 все классы являются классами нового стиля, поэтому в этом больше нет необходимости.Классы нового стиля имеют несколько особых атрибутов, которых не хватает классическим классам.
Также свойства и super не работают с классическими классами.
В Python2 рекомендуется сделать все классы классами нового стиля. (Хотя многие классы в стандартной библиотеке по-прежнему являются классическими для обеспечения обратной совместимости.)
В общем, в таком заявлении, как
Foo
объявляется как класс, унаследованный от базовых классовBase1
иBase2
.object
это мать всех классов в Python. Это класс нового стиля, поэтому наследование отobject
создаетTable
класс нового стиля.источник
object
из списка баз классов) в учебнике .object
. Эти два оператора вместе означают, что вам не нужно включатьobject
в список баз классов в Python3, поскольку все классы являются классами нового стиля в Python3.Table
Класс расширяет класс с именемobject
. Это не аргумент. Причина, по которой вы можете захотеть расширитьobject
явно, заключается в том, что он превращает класс в класс нового стиля. Если вы явно не укажете, что он расширяетсяobject
до Python 3, он по умолчанию будет классом старого стиля. (Начиная с Python 3, все классы относятся к новому стилю, независимо от того, расширяете вы явноobject
или нет.)Для получения дополнительной информации о классах нового и старого стиля см. Этот вопрос .
источник
Просто обратите внимание, что различие классов «новый стиль» и «старый стиль» характерно для Python 2.x, в 3.x все классы относятся к «новому стилю».
источник
Таблица классов и Таблица классов (объект) ничем не отличаются для Python.
Это не параметр, он происходит от объекта (который является базовым классом, как и многие другие языки).
Все, что он говорит, это то, что он наследует все, что определено в «объекте». Это поведение по умолчанию.
источник
object
является поведением по умолчанию только в Python 3. В python 2 объект, расширяющий класс, имеет атрибуты, которых не будет у класса, не расширяющего объект.объект - это самый базовый тип объекта класса, определенный в python. Атрибуты объекта можно увидеть ниже
** >>> dir (объект)
[' class ', ' delattr ', ' doc ', ' format ', ' getattribute ', ' hash ', ' init ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' setattr ', ' sizeof ',' str ',' subclasshook '] **
Итак, Table (объект) - это просто наследование.!
источник
1) Имя класса (объект): 2) Имя класса: они оба одинаковы, но первый лучше с точки зрения написания, он выглядит лучше при наследовании других классов другому, выглядит однородным.
Как же? Итак, каждая вещь в Python относится к объекту, что означает, что каждая вещь в Python имеет свойство объекта, если писать или нет, он это поймет. Во первых мы явно говорим об этом, а во вторых - нет.
источник