Flask instanciation app = Flask()

Mik*_*ila 4 python init flask

我故意在app = Flask(name)中删除了名字,我收到此错误:

Traceback (most recent call last):
    File "routes.py", line 4, in <module>
        app = Flask() 
TypeError: __init__() takes at least 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

这是我的nettuts代码,这是我的代码:

from flask import Flask, render_template

app = Flask() 

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/about')
def about():
    return render_template('about.html')


if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

我的问题是:这个init方法在哪里至少需要2个参数?

cod*_*eek 10

如果您理解类和对象的概念,那么__init__是初始化类实例的构造函数.在这种情况下,该类是Flask,当您执行以下操作时,您正在初始化Flask对象的实例:

app = Flask(__name__) 
Run Code Online (Sandbox Code Playgroud)

现在你的问题是,"这个init方法在哪里至少需要2个参数?"

这可以按照下面的定义来解释,它定义了代码中的构造函数.

def __init__(self, import_name, static_path=None, static_url_path=None,
                 static_folder='static', template_folder='templates',
                 instance_path=None, instance_relative_config=False):
Run Code Online (Sandbox Code Playgroud)

如果您看到上述内容,self并且import name是必需参数,则休息均为默认值或不需要.该self由Python的需要,即使你能说出它什么都重要.阅读本博客由python本人的创建者为什么http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html


Daz*_*all 7

__init__类似于python中的构造函数 - 它是在创建对象的新实例时调用的函数,在本例中是Flask应用程序对象.

App对象需要一个import_name,这是您传递给Flask构造函数的第一个参数.您可以在此处阅读更多相关信息(请参阅"关于第一个参数")


Jon*_*nts 1

您需要为 Flask 应用程序命名:

app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

__name__将是当前模块的名称,但原则上您可以将其命名为任何您想要的名称......