Python类调用出现AttributeError: 'NoneType' object has no attribute 'bar'错误排查
解决你的AttributeError问题
兄弟,咱们来一步步拆解你代码里的问题:
- 你没把
Foo定义成类,而是写成普通函数了:Python里定义类得用class关键字,不是def,你现在写的def Foo()只是个普通函数,根本不是类哦。 - 普通函数
Foo默认返回None:你的函数里没有return语句,执行f = Foo()后,f其实就是None,自然调用不了bar方法,这就是你看到AttributeError: 'NoneType' object has no attribute 'bar'的根本原因。 - 就算是类,方法定义也不对:你在函数里嵌套的
bar写法不符合类方法的规范,类里的实例方法需要正确关联到实例,而且初始化属性得用专门的构造方法。
给你改好的正确代码:
class Foo: def __init__(self): self.a = 0 # 初始化实例属性a def bar(self): return self.a f = Foo() print(f.bar()) # 输出0
咱们说说改了啥:
- 用
class Foo:替代def Foo(),把它变成真正的类 - 新增
__init__方法(类的构造方法),用来初始化实例属性self.a - 把
bar方法放在类里面作为实例方法,这样调用f.bar()时,self会自动指向实例f,就能正确访问self.a啦
内容的提问来源于stack exchange,提问作者PickleProgrammer
相关产品推荐
相关产品推荐

