"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 > Métodos de instância versus métodos de classe em Python: quando você deve usar "self" e "cls"?

Métodos de instância versus métodos de classe em Python: quando você deve usar "self" e "cls"?

Publicado em 2024-11-09
Navegar:436

  Instance vs. Class Methods in Python: When Should You Use \

Mergulhando nas nuances dos métodos de classe e instância: além de Self vs. Cls

A Proposta de Aprimoramento do Python (PEP) 8 sugere o uso de "self" como o primeiro argumento em métodos de instância e "cls" como o primeiro argumento em métodos de classe. Essa distinção decorre das diferentes funções que esses métodos desempenham no trabalho com instâncias e classes.

Métodos de instância: a vantagem própria

Métodos de instância são invocados em instâncias de um aula. Eles normalmente interagem com atributos e comportamentos específicos dessa instância específica. O primeiro parâmetro desses métodos é self, que representa a instância na qual o método está sendo chamado.

Por exemplo, a classe a seguir define um método de instância de "introdução":

class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))

Quando criamos uma instância da classe Inst e chamamos seu método "introduce", o a própria instância é passada como o parâmetro self, permitindo-nos acessar seus atributos (neste caso, o atributo "name").

Métodos de classe: abraçando Cls

Os métodos de classe, por outro lado, operam na própria classe e não em instâncias individuais. Eles nos permitem modificar ou inspecionar a estrutura ou comportamento da classe. O primeiro parâmetro desses métodos é cls, que representa a classe na qual o método está sendo chamado.

O exemplo a seguir ilustra um método de classe:

class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)

Este método não requer uma instância, pois não interage com atributos específicos do objeto. Em vez disso, ele opera na própria classe, fornecendo informações sobre sua estrutura.

Os métodos de classe são particularmente úteis ao herdar de uma classe pai, pois permitem que a classe filha modifique ou estenda o comportamento da classe pai. Por exemplo, a subclasse a seguir substitui o método "introduzir" da classe Cls:

class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am 

Ao usar "cls" como primeiro parâmetro, o método "introduce" pode ser chamado diretamente na subclasse, permitindo que ela defina seu próprio comportamento enquanto ainda acessando propriedades herdadas da classe pai.

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