2
respostas

Retorno inesperado em Static Method

Boa noite. Tenho o seguinte código:

class ContaCorrente:
    codigo_banco = '001'

    @staticmethod               
    def codigo_banco():
        return codigo_banco

Quando importo essa classe para o terminal e tento colocar o retorno de codigo_banco numa variável

from conta import ContaCorrente
variavel = ContaCorrente.codigo_banco

Recebo como output <function ContaCorrente.codigo_banco at 0x000001FC156FF400>, enquanto esperava o valor '001'. Não entendi por quê isso acontece.

Gostaria de saber se tem como eu chamar esse atributo da classe sem criar um objeto antes. Chamando a classe + método (ContaCorrente.codigo_banco), sem chamar o objeto.codigo_banco. É possível fazer isso?

2 respostas

Bom dia,

Static methods são funções que estão dentro da classe por organização, ela está dentro da classe porém funcionam como uma função normal.

E funcionaria mais ou menos assim conta.codigo_banco(), teria os parênteses.

Nesse caso quando você coloca o conta.codigo_banco ele avisa que há essa função dentro do objeto.

Outro porém, se vc colocar os parênteses, vai verificar que o código do banco não está definido, por que ele foi declarado fora da função.

Caso queria apenas saber o valor de um atributo de uma classe, use property, porém teria que haver o construtor init e os atributos da classe.

Olá, na realidade você não precisa de um método estático, pois você está tentando acessar um atributo da classe.

Aqui você tem sua classe.


class ContaCorrente:
    codigo_banco = '001'

Aqui você precisa de uma identação para que esse método faça parte da classe.

@staticmethod               
def codigo_banco():
    return codigo_banco

Ficaria assim


class ContaCorrente:
    codigo_banco='001'

    def codigo_banco(self):
        return self.codigo_banco