"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso adicionar atributos e métodos personalizados aos tipos integrados do Python?

Como posso adicionar atributos e métodos personalizados aos tipos integrados do Python?

Publicado em 2024-11-20
Navegar:865

How can I add custom attributes and methods to built-in Python types?

Estendendo tipos integrados do Python com atributos e métodos personalizados

Em Python, estendendo tipos integrados, como dicionários, com métodos ou atributos personalizados pode parecer um pedido simples. No entanto, o design do Python não suporta nativamente tais modificações. Ao contrário do mecanismo de herança de protótipo do JavaScript, os tipos integrados do Python são estáticos e imutáveis. possível, você pode obter um efeito semelhante subclassificando o tipo e substituindo-o no namespace global. Isso permite que você adicione atributos e métodos personalizados às instâncias da nova subclasse.

Por exemplo, suponha que queiramos adicionar um método helloWorld() ao tipo dict. Podemos criar a seguinte subclasse:

class mydict(dict): def oláMundo(self): # Implementação de método personalizado print("Olá, mundo do mydict!")

Para substituir o dict integrado por nossa subclasse, podemos usar o módulo __builtin__:

class mydict(dict):
    def helloWorld(self):
        # Custom method implementation
        print("Hello world from mydict!")

Uso e limitações

import __builtin__
__builtin__.dict = mydict

d = dict() d.helloWorld() # Saídas "Hello world from mydict!"

No entanto, é importante observar que os objetos criados usando sintaxe literal ainda serão instâncias do tipo dict original e não terão seus métodos ou atributos personalizados :

d = dict()
d.helloWorld()  # Outputs "Hello world from mydict!"
Isso ocorre porque a sintaxe literal ignora o processo de construção do objeto e cria diretamente instâncias de tipos integrados. Para superar essa limitação, você pode definir uma função que converte objetos integrados em suas instâncias de subclasse:

d = {}
d.helloWorld()  # Raises AttributeError
Em seguida, use a função em vez da sintaxe literal para criar dicionários:

d = my_dict({})
d.helloWorld() # Saídas "Olá mundo do mydict!"
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3