Estou tentando traduzir algum código python para código scala. Portanto, sou um novato total em Python.
Mas por que algumas classes têm objeto como parâmetro, mas nunca o usam explicitamente? Qual é a razão para tê-lo como parâmetro em primeiro lugar?
Exemplo:
class Table(object)
Obrigado pelo seu tempo.
Respostas:
Em Python2, isso declara
Table
ser uma classe de novo estilo (em oposição à classe "clássica"). Em Python3, todas as classes são classes de novo estilo, então isso não é mais necessário.As novas classes de estilo têm alguns atributos especiais que faltam às classes clássicas.
Além disso, propriedades e super não funcionam com classes clássicas.
Em Python2, é uma boa ideia criar um novo estilo de classes para todas as classes. (Embora muitas classes na biblioteca padrão ainda sejam classes clássicas, para fins de compatibilidade com versões anteriores.)
Em geral, em uma declaração como
Foo
está sendo declarado como uma classe que herda das classes baseBase1
eBase2
.object
é a mãe de todas as classes em Python. É uma classe de estilo novo, assim herdando deobject
marcasTable
uma classe de estilo novo.fonte
object
da lista de bases de classes) no tutorial .object
. As duas instruções juntas implicam que você não precisa incluirobject
na lista de bases de classe em Python3, pois todas as classes são classes de novo estilo em Python3.A
Table
classe está estendendo uma classe chamadaobject
. Não é um argumento. O motivo pelo qual você pode querer estenderobject
explicitamente é que isso transforma a classe em uma classe de novo estilo. Se você não especificar explicitamente que estendeobject
, até Python 3, ele será uma classe de estilo antigo por padrão. (Desde Python 3, todas as classes têm um novo estilo, quer você estenda explicitamenteobject
ou não.)Para obter mais informações sobre classes de estilo antigo e novo, consulte esta pergunta .
fonte
Apenas uma observação de que a distinção de classe “novo estilo” vs “estilo antigo” é específica para Python 2.x; no 3.x, todas as classes são “novo estilo”.
fonte
A classe Table e a classe Table (objeto) não são diferentes para Python.
Não é um parâmetro, ele se estende do objeto (que é a classe base como muitas outras linguagens).
Tudo o que diz é que herda tudo o que está definido em "objeto". Este é o comportamento padrão.
fonte
object
é o comportamento padrão apenas no Python 3. No python 2, um objeto de extensão de classe possui atributos que uma classe que não estende o objeto não terá.object é o tipo mais básico de objeto de classe definido em python. Os atributos do objeto podem ser vistos como abaixo
** >>> dir (objeto)
[' classe ', ' delattr ', ' doc ', ' formato ', ' getattribute ', ' hash ', ' init ', ' novo ', ' reduzir ', ' reduzir_ex ', ' repr ', ' setattr ', ' sizeof ',' str ',' subclasshook '] **
Portanto, Table (objeto) é apenas herança.!
fonte
1) Nome da classe (objeto): 2) nome da classe: Ambos são iguais, mas primeiro um muito melhor em termos de escrita, parece melhor enquanto herda outras classes para outra, parece homogêneo.
Como mesmo? Então, tudo em Python está sob o objeto significa que tudo em Python tem propriedade de objeto, se escrever ou não ele vai entender. Na primeira, nós explicamos isso explicitamente, na segunda, não.
fonte