python import 初学者困惑

问题描述 投票:0回答:2

我是一个Python初学者,对模块的导入方式有点困惑。

我附上了屏幕截图,以更清楚地说明我的要求。

我从 djangoproject.com 获取以下代码:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)

由于导入语句引用名为“models”的文件夹,这是否意味着“models”文件夹中的每个模块都将导入到会话中?

如果是这样,是 models.Model 在这些模块之一中找到的类吗?如果是,那么为什么我无法在任何文件中找到此类?我在所有文件中搜索了“class Model(”,但找不到它。

enter image description here

python import
2个回答
0
投票

当您导入这样的模块时,如果

module.__init__.py
为空,则不会导入任何内容。

如果你可以做这样的事情:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)

那么这意味着

CharField
要么在
__init__.py
中定义,要么以某种方式在
module.__init__.py

中显式导入

因此,要回答您的问题,在您致电

from django.db import models
后实际导入了什么,您需要检查
module.__init__.py

您可以在此处找到更多信息:__init__.py 的用途是什么? 在这里:https://docs.python.org/3/tutorial/modules.html


0
投票

我同意上面的答案,但如果它变得太复杂,你总是可以导入完整的模块:)

import django.db

class Book(models.Model):
title = models.CharField(max_length=100)

我总是

import
完整模块,因为有时我需要模块中的其他东西,所以最后我大多把
from
放在那里。我刚才说的不是很清楚,所以这里是一个例子: 节目开始:

import tkinter

节目结束:

from tkinter import Simpledialog, Tk, Canvas

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.