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'
答案 0 :(得分:1)
似乎您希望在创建任何name
对象时将eye
,age
和person
属性设置为默认属性。在这种情况下,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
。