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.
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