Python 属性错误:';人';对象没有属性';名称';

Python 属性错误:';人';对象没有属性';名称';,python,class,methods,syntax-error,spyder,Python,Class,Methods,Syntax Error,Spyder,我不明白为什么我会在第13行 myperson.name.firstname='apple'AttributeError:'person'对象没有属性'name'似乎您希望在创建任何person对象时,将名称、眼睛和年龄属性设置为默认值。如果是这种情况,详细信息实际上应该替换为\uuuu init\uuu,例如: 班级人员: 定义初始化(自): self.name=name() self.eye=“[无眼]” self.age=-1 类的\uuuu init\uuuu方法定义创建对象时应如何初

我不明白为什么我会在第13行
myperson.name.firstname='apple'AttributeError:'person'对象没有属性'name'

似乎您希望在创建任何
person
对象时,将
名称
眼睛
年龄
属性设置为默认值。如果是这种情况,
详细信息
实际上应该替换为
\uuuu init\uuu
,例如:

班级人员:
定义初始化(自):
self.name=name()
self.eye=“[无眼]”
self.age=-1
类的
\uuuu init\uuuu
方法定义创建对象时应如何初始化对象。您不需要显式调用此方法;而是在创建类的实例时自动运行:

#创建persion的实例,调用
#`person.\uuuu init\uuuu()`,并分配结果
#致“我的人”:
myperson=person()
现在,您应该能够引用和分配属性:

myperson.name.firstname='apple'
myperson.name.lastname='regmi'
myperson.name.firstname='cat'
类似地,
name.full\u name
可能应该是
name.\uuuuu init\uuuu


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

显然,您无法访问
myperson.name
,因为您最初没有运行
myperson.detail
,所以
myperson.name
尚未定义。
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)