Python 烧瓶实例应用=烧瓶()

Python 烧瓶实例应用=烧瓶(),python,flask,init,Python,Flask,Init,我故意删除了app=Flask(name)中的name,我得到了以下错误: Traceback (most recent call last): File "routes.py", line 4, in <module> app = Flask() TypeError: __init__() takes at least 2 arguments (1 given) 我的问题是:至少接受2个参数的init方法在哪里?您需要为Flask应用程序命名: app

我故意删除了app=Flask(name)中的name,我得到了以下错误:

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

我的问题是:至少接受2个参数的init方法在哪里?

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

app = Flask(__name__)

\uuuuu name\uuuuuu
将是当前模块的名称,但原则上您可以随意调用它…

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

应用程序对象需要一个
import\u名称
,这是传递给
Flask
构造函数的第一个参数。您可以阅读更多相关内容(请参阅“关于第一个参数”)

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

就在这里:


如果您理解类和对象的概念,那么
\uuuu init\uuuu
是初始化类实例的构造函数。在本例中,类为Flask,执行以下操作时,您正在初始化Flask对象的实例:

app = Flask(__name__) 
现在你的问题是,“这个至少接受2个参数的init方法在哪里?”

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

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):

如果您在上面看到,
self
import name
是必需的参数,其余参数都是默认值或非必需的。Python需要
self
,尽管您可以为它命名任何其他名称。请阅读python创建者自己的博客,了解为什么要直接回答您的问题:
\uuu init\uuu
是调用
Flask()
的结果。您最初的调用旨在启动类的实例
Flask
,而
\uuuuu init\uuuu
是执行设置的函数

但要解决眼前的问题:您只需要通过一个参数。错误消息具有误导性。

这并不是不正确的,但它所讨论的函数不是您认为调用的函数@codegeek的示例向您展示了“第一”参数是什么。它是
self
。但是,当调用
Class时,这是从类内部传递的。你看不到有人在使用
self
,除非是隐式的——它是你回溯中的(1个给定)参数,当你认为你传递的是零个参数时

重要的是,这并不是本例所独有的——您将在非常简单的示例中看到同样的情况,如:

class Example:
    def __init__(self, one):
        self.one = one
ex = Example()
这将产生:

TypeError: __init__() takes exactly 2 arguments (1 given)
意思是,
Example()


(从问题中,我强烈建议您阅读类似以下内容或python类的其他介绍。类是语言的基本元素,初始化它们是其功能的基本部分。)

简单地回答您的问题,\uuu init\uu方法是Flask()的默认构造函数在这里上课。它只是驻留在您刚刚从语句导入的Flask类中

from flask import Flask
所以,当你说

app = Flask(__name__)
它所做的只是实例化这个Flask类的一个对象。由于您没有传递\uuuu name\uuuu参数,因此它会抛出错误


您可以找到\uuuu init\uuuu

方法

如果您想查看Flask的实际代码,可以访问/venv/lib/python.27/site-packages/Flask如果您使用了virtualenv,那么您应该在这里安装pip的所有内容;)
app = Flask(__name__)