我是python的新手。以下是代码。
class simple:
def __init__(self, str):
print("inside the simple constructor")
self.s = str
# two methods:
def show(self):
print(self.s)
def showMsg(self, msg):
print(msg + ":", self.show())
if __name__ == "__main__":
# create an object:
x = simple("constructor argument")
x.show()
x.showMsg("A message")
运行之后,我得到了
AttributeError: 'simple' object has no attribute 'show'
那么,有谁知道这里发生了什么? '秀'不是属性,对吗?根据我的理解,它应该是一种方法。有谁知道这里发生了什么?非常感谢您的时间和关注。
答案 0 :(得分:1)
您需要缩进方法以告诉解释器它们是该类的一部分。否则,您只需创建独立功能。
class simple:
def __init__(self, str):
print("inside the simple constructor")
self.s = str
# two methods:
# note how they are indented
def show(self):
print(self.s)
def showMsg(self, msg):
print(msg + ":", self.show())
if __name__ == "__main__":
# create an object:
x = simple("constructor argument")
x.show()
x.showMsg("A message")
从技术上讲,如果您愿意,可以使用show(x)
而不是x.show()
来使缩进版本正常工作,但是如上所述修复缩进更清晰。