TypeError:“非类型”对象不可调用编辑对象的属性时出现错误

2024-09-30 02:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试开发以下代码,用于使用面向对象编程练习Python:

class Pessoa:

    def __init__(self, nome, sobrenome):
        self._nome = nome
        self._sobrenome = sobrenome

#getters
    @property
    def nome(self):
        return self._nome

    @property
    def sobrenome(self):
        return self._sobrenome

    @nome.setter
    def setNome(self, nome):
        self._nome = nome

    @sobrenome.setter
    def sobrenome(self, sobrenome):
        self._sobrenome = sobrenome

    def getNomeCompleto(self):
        return self._nome + " " + self._sobrenome

pessoa1 = Pessoa(None, None)

pessoa1.nome("Mário")
pessoa1.sobrenome("Lopes")
print(pessoa1.getNomeCompleto())

当我运行代码时,总是会出现与行“pessoa1.nome(“Mário”)”相关的错误:

TypeError: 'NoneType' object is not callable

我不知道怎么解决它。我试图调用的是nome的setter方法


Tags: 代码selfnonereturninitdefpropertyclass
2条回答
pessoa1.nome("Mário")

您正在尝试将参数传递给对象字段。打电话给你的二传手

pessoa1.setNome("Mário")

此时,您的代码试图调用类上的nome属性,该属性被初始化为None,从而引发您看到的错误

nome的setter当前命名不正确-其名称应与属性(getter)的名称匹配:

@nome.setter                                                                
def nome(self, nome):                                                       
    self._nome = nome

进行校正后,应使用以下方法设置特性值:

pessoa1.nome = "Mário"

这将通过您定义的setter方法继续进行

全文:

pessoa1.nome = "Mário"
pessoa1.sobrenome = "Lopes"
print(pessoa1.getNomeCompleto())

输出:

Mário Lopes

相关问题 更多 >

    热门问题