gpt4 book ai didi

python - 方便地从 Python 包中的模块导入多个类

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:46 25 4
gpt4 key购买 nike

我目前正在为语法树创建一个框架。我有一个文件夹/包 syntax,其中包含一个语法树元素,它是每个文件中的一个类,结构如下所示:

syntax/List.py -> contains class List
syntax/Block.py -> contains class Block
syntax/Statement.py -> contains class Statement

现在我想以一种可以访问类的方式将文件夹导入我的源文件

block = syntax.Block()

这可能吗?到目前为止,我总是以我需要 syntax.Block.Block() 这不是很好...

最佳答案

项目结构

syntax
├── Block.py
├── __init__.py

# syntax/Block.py (this file really ought to be lowercase, leave PascalCase to class names)
class Block(object):
pass

进口 __init__

# syntax/__init__.py
from .Block import Block # Relative import with .

使用包

In [5]: import syntax

In [6]: b = syntax.Block()

In [7]: b
Out[7]: <syntax.Block.Block at 0x108dcb990>

如果您对重组持开放态度,则可以选择

要求我们将单个类放入同名文件(类 Block 在文件 Block.py 中)的语言不同,Python 对此非常灵活。

其实你可以把很多类放在syntax.py中并导入 syntax一个人,然后访问syntax.Block (不需要在 __init__.py 中导入)

# syntax.py
class Block(object):
pass
class List(object):
pass

然后可以如下使用

import syntax
b = syntax.Block()
l = syntax.List()

关于python - 方便地从 Python 包中的模块导入多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com