Python类方法what_are_you无输出问题咨询:是否为语法错误?
问题分析与解决
咱们一步步拆解你代码里的问题,这两个都是Python类编程里很常见的新手坑:
1. 方法调用时没加括号,导致方法根本没执行
你写的a.what_are_you只是引用了这个方法的对象,并没有触发方法内部代码的运行——这就像你拿到了开盒子的钥匙,但只是攥在手里没插进锁孔转动一样。所以代码里只会在print(a.what_are_you)时输出方法的绑定信息,而不会运行方法里的print语句。
正确的调用方式必须加上括号:
a.what_are_you() # 这样才会执行方法内部逻辑
2. 实例方法缺少self参数,且未通过实例访问属性
Python中,所有的实例方法第一个参数必须是self(名字可以自定义,但行业惯例都用self),它代表调用该方法的实例本身。你的what_are_you方法没有这个参数,就算你加了括号调用,Python也会抛出TypeError——因为Python会自动把实例a作为第一个参数传递给方法,但方法没有预留接收它的位置。
另外,方法里直接写print(foo, bar)也是错误的:foo和bar是你在__init__里绑定到实例的属性,必须通过self.foo和self.bar才能访问到,否则Python会把它们当成全局变量,找不到就会抛出NameError。
修正后的完整代码
class example(object): def __init__(self, foo, bar): self.foo = foo self.bar = bar def what_are_you(self): # 添加上self参数 print(self.foo, self.bar) # 通过self访问实例属性 print("This works now!") a = example("aaa","bbb") a.what_are_you() # 加括号执行方法 print(a.foo,a.bar)
运行这段代码,就能得到你预期的输出:
aaa bbb This works now! aaa bbb
内容的提问来源于stack exchange,提问作者Orión González
相关产品推荐
相关产品推荐

