AttributeError:“人员”对象没有属性“名称”

时间:2020-05-21 06:00:47

标签: python class methods syntax-error spyder

class Name():
    def full_name(self):
        self.firstname='[no name]'
        self.lastname='[no name]'

class person:
    def detail(self):
        self.name=Name()
        self.eye='[no eye]'
        self.age=-1

myperson=person()
myperson.name.firstname='apple'
myperson.name.lastname='regmi'
myperson.name.firstname='cat'
print(myperson.name.firstname)

我无法找出为什么我要进入第13行 myperson.name.firstname ='apple'AttributeError:'person'对象没有属性'name'

1 个答案:

答案 0 :(得分:1)

似乎您希望在创建任何name对象时将eyeageperson属性设置为默认属性。在这种情况下,detail应该真正地替换为__init__,例如:

class person:
    def __init__(self):
        self.name=Name()
        self.eye='[no eye]'
        self.age=-1

类的__init__方法定义了创建对象时应如何初始化它们。您无需显式调用此方法。相反,当您创建类的实例时,它将自动运行:

# create an instance of persion, call
# `person.__init__()`, and assign the result
# to `myperson`:
myperson = person()

现在,您应该可以引用和分配属性了:

myperson.name.firstname='apple'
myperson.name.lastname='regmi'
myperson.name.firstname='cat'

类似地,name.full_name应该是name.__init__

请注意,到convention,python中的类通常使用TitleCase,因此此类通常被命名为Person;同样,name将是Name