[英]Python AttributeError: type object X has no attribute Y
[英]How to fix Python error: AttributeError: type object X has no attribute Y
我正在创建一个练习python文件以更好地理解面向对象的编程,并且出现以下错误:
AttributeError: type object 'ID' has no attribute 'the_other_number'
我不太明白为什么会这样,因为当我像下面那样更改变量时,它就可以正常工作。 我仅在尝试在if语句中使用它时收到错误:
ID.the_other_number = 'new_value'
以下是我尝试修复的示例代码,感谢您的帮助。
class ID():
def __init__(self):
self.other_number()
pass
def other_number(self):
self.the_other_number = 3111
class ID_2():
def __init__(self):
self.update_number()
def update_number(self):
if ID.the_other_number > 4:
print(ID.the_other_number)
if __name__ == '__main__':
ID()
ID_2()
我期望它了解什么变量等于并正确运行if语句。 另外,不要试图理解代码,我意识到代码没有意义,这只是一个例子。
您犯了一个错误:您必须了解ID
是一个类,而不是一个对象
因此,如果要使用功能ID.the_other_number
,则必须首先创建一个ID
对象。 因此,只需在代码中增加一行
class ID():
def __init__(self):
self.other_number()
pass
def other_number(self):
self.the_other_number = 3111
class ID_2():
def __init__(self):
self.update_number()
def update_number(self):
# Create one object of class ID - ID_object
ID_object = ID()
# Call the function for ID_object
if ID_object.the_other_number > 4:
print(ID_object.the_other_number)
if __name__ == '__main__':
ID()
ID_2()
@Patrick Haugh的答案已经解释了为什么您的代码无法按照您期望的方式执行。 缺少缩进的问题,这是我将如何修改您的代码以打印类ID的the_other_number属性:
class ID():
def __init__(self):
self.other_number()
def other_number(self):
self.the_other_number = 3111
return self.the_other_number
class ID_2():
def __init__(self):
self.update_number()
def update_number(self):
id = ID()
if id.other_number() > 4:
print(id.the_other_number)
if __name__ == '__main__':
ID()
ID_2()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.