该对象在python中没有指定的属性错误

时间:2016-09-06 01:45:09

标签: python

我是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'

那么,有谁知道这里发生了什么? '秀'不是属性,对吗?根据我的理解,它应该是一种方法。有谁知道这里发生了什么?非常感谢您的时间和关注。

1 个答案:

答案 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()来使缩进版本正常工作,但是如上所述修复缩进更清晰。