类函数参数Python的问题

时间:2017-03-11 21:55:09

标签: python class arguments

在尝试调用类中定义的函数时,我遇到了TypeError类的问题。错误是:TypeError: p() takes exactly 1 argument (2 given)

class HTMLGen:
    def p(text):
        return ("<p>%s</p>" % text)
    def a(text):
        return ("<a>%s</a>" % text)
    def b(text):
        return ("<b>%s</b>" % text)
    def title(text):
        return ("<title>%s</title>" % text)
    def comment(text):
        return ("<!--%s-->" % text)
    def div(text):
        return ("<div>%s</div>" % text)
    def span(text):
        return ("<span>%s</span>" % text)
    def body(text):
        return ("<body>%s</body>" % text)

然后,导入HTMLGen类并尝试以这种方式使用HTMLGen.p(t)函数

>>> import htmlgen
>>> website = htmlgen.HTMLGen()
>>> paragraph = website.p("Hello World!")

然后按Enter键,我收到上述错误。有谁知道HTMLGen.p()和其他函数为什么会有多个参数,以及防止这种情况发生的最简单方法是什么?

2 个答案:

答案 0 :(得分:0)

每当你在类中创建函数时,它必须在类中的所有函数中都有自变量。

class HTMLGen:
    def p(self,text):
        return ("<p>%s</p>" % text)
    def a(self,text):
        return ("<a>%s</a>" % text)
    def b(self,text):
        return ("<b>%s</b>" % text)
    def title(self,text):
        return ("<title>%s</title>" % text)
    def comment(self,text):
        return ("<!--%s-->" % text)
    def div(self,text):
        return ("<div>%s</div>" % text)
    def span(self,text):
        return ("<span>%s</span>" % text)
    def body(self,text):
        return ("<body>%s</body>" % text)

答案 1 :(得分:0)

您需要通过名为self的约定添加其他参数。它指的是对象本身。许多编程语言使用关键字this代替。

def span(self, text):
    return ("<span>%s</span>" % text)