Python中无法访问函数 - 错误:未定义全局名称

时间:2015-08-04 17:13:23

标签: python

我是Python编程的新手,我遇到了以下错误:

form="""
    <form method="post">
    What is your birthday?
    <br>

    <label> Month
        <input type="text" name="month">
    </label

    <label> Day
        <input type="text" name="day">
    </label>

    <label> Year
        <input type="text" name="year">
    </label>

    <br>
    <br>
    <input type="submit">
</form>
"""

class MainPage(webapp2.RequestHandler):

def get(self):
        self.response.out.write(form)

def valid_day(day):
        if day and day.isdigit():
            day = int(day)
            if day > 0 and day <= 31:
                return day

def valid_year(year):
        if year and year.isdigit():
            year = int(year)
            if year > 1899 and year < 2021:
                return year
def post(self):
        user_day = valid_day(self.request.get('day'))
        user_year = valid_year(self.request.get('year'))

我告诉全球名称&#39; valid_day&#39;没有定义。谁能告诉我哪里有错?我想我上面定义了函数valid_day / valid_year所以它应该是可访问的吗?

1 个答案:

答案 0 :(得分:2)

使用self作为post函数的参数,可以看出此代码位于类中。

在这种情况下,您需要使用self来访问这些方法。 (通常,关于在调用之上定义和定义函数的假设是正确的。)

重写你的帖子功能如下:

def post(self):
    user_day = self.valid_day(self.request.get('day'))
    user_year = self.valid_year(self.request.get('year'))