Sou novato em python e estou tentando obter alguns detalhes. Então, eu estava lendo Python Types and Objects, de Shalabh Chaturvedi, quando todo o pequeno livro fez sentido para mim, encontrei este parágrafo.
Existem dois tipos de objetos em Python:
Objetos de tipo - podem criar instâncias, podem ser subclassificados.
Objetos sem tipo - não podem criar instâncias, não podem ser subclassificados.
...
Para criar um novo objeto usando subclasses, usamos a instrução class e especificamos as bases (e, opcionalmente, o tipo) do novo objeto. Isso sempre cria um objeto de tipo.
Para criar um novo objeto usando instanciação, usamos o operador de chamada (
()
) no tipo de objeto que queremos usar. Isso pode criar um objeto de tipo ou não, dependendo de qual objeto de tipo foi usado .
o último parágrafo com texto em itálico me escapou totalmente. Achei que chamar someTypeObject()
sempre criava uma instância do tipo objeto.
Pesquisei no Google e tentei o ChatGPT, mas não consegui a resposta adequada
Quando é uma metaclasse . Normalmente isso significa
type
a metaclasse padrão para classes Python.Você está certo. Chamar
type
(com três argumentos) cria uma instância detype
(ou seja, um objeto de tipo , também conhecido como class ).Demonstração:
type()
é totalmente diferente: ela retorna o tipo de um objeto. Sim, é confuso.