Pergunta

Todos os python embutidos são subclasses de object E eu me deparei com muitas classes definidas pelo usuário que também são. Por quê? Qual é o objetivo da classe object? É apenas uma aula vazia, certo?

Foi útil?

Solução

Em suma, define pôneis mágicos livres.

Em Long, o Python 2.2 e anteriormente usou "aulas de estilo antigo". Eles eram uma implementação específica de classes e tinham algumas limitações (por exemplo, você não podia subclassem tipos de construção). A correção para isso era criar um novo estilo de classe. Mas, fazer isso envolveria algumas mudanças incompatíveis com versões anteriores. Então, para garantir que o código que seja escrito para aulas de estilo antigo ainda funcione, o object A classe foi criada para atuar como uma superclasse para todas as aulas de novo estilo. Então, em Python 2.x, class Foo: pass criará uma aula de estilo antigo e class Foo(object): pass criará uma nova classe de estilo.

Em mais tempo, veja Guido's Tipos e classes unificadoras no Python 2.2.

E, em geral, é uma boa ideia entrar no hábito de fazer de todas as suas aulas novas no estilo, porque algumas coisas (o @property Decorador é aquele que vem à mente) não funcionará com aulas de estilo antigo.

Outras dicas

Resposta curta: Subclassificação object efetivamente faz disso um novo estilo Classe (observe que isso é desnecessário, pois é automático no Python 3.x)

Para a diferença entre new style Aulas e old style Aulas: Veja Esta questão de Stackoverflow. Para a história completa: veja Este bom artigo sobre tipos e objetos python.

Tem a ver com o "novo estilo" das aulas. Você pode ler mais sobre isso aqui: http://docs.python.org/tutorial/classes.html#multiple-nheritance E também aqui: http://docs.python.org/reference/datamodel.html#new-tyle-and-classic-cllasses

O uso de novas classes de estilo permitirá que você use "Recursos versáteis mais recentes do Python, como __slots__, descritores, propriedades e __getAttribute __ ()".

Certo, mas marca a classe como um novo estilo classe. Classes recém -desenvolvidas devem usar o object base porque custa pouco e à prova de futuro seu código.

A versão curta é que as classes clássicas, que não precisavam de uma superclasse, tinham limitações que não podiam ser contadas sem quebrar muito código antigo. Então eles criaram o conceito de novas classes de estilo que subclassem de object, e agora você pode fazer coisas legais como definir propriedades e subclasse dict não é mais um exercício de dor e insetos estranhos.

Os detalhes estão na Seção 3.3 dos documentos Python: Aulas de estilo novo e clássico.

O Python 2.2 introduziu "Novas Classes de Estilo" que tinham vários recursos adicionais em relação às classes de estilo antigo que não subclassem objeto. O objeto de subclasses foi a maneira escolhida de indicar que sua classe deveria ser uma nova classe de estilo, não um estilo antigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top