簡體   English   中英

如何將類構建到 Python 模塊中

[英]How to build a class into a Python module

我有一個類文件fil1.py ,在這個文件中,只有一個名為f類。 我想將這個類文件構建到一個模塊中,我嘗試將我的文件組織成這樣:

foo/
 foo/
    __init__.py
    file1.py # where class resides
 setup.py
 README.md
 LICENSE

__init__.py ,我有一句話:

from file1 import f

然后,當我在 pypi 上發布然后安裝回我的本地計算機時。 當我嘗試:

from foo import f

我收到一條錯誤消息:

ImportError: cannot import name 'f' from 'foo'

我也試過

import foo
foo.f

錯誤消息是:

foo has no attribute f

我不確定如何實現我想要的。

Python 中沒有“類文件”這樣的東西。 文件是一個模塊,模塊可能包含零個或多個類、函數或未包含在類或函數中的有效 python 語句(在導入模塊時只運行一次)。 也就是說,我認為你想要:

foo/file1.py:

class f:
[...]

foo/__init__.py:

from foo.file1 import f

那么以下所有內容都是有效的(假設foosys.path上可用,它自動包含當前工作目錄作為第一個條目):

import foo
import foo.file1
from foo import f
from foo.file1 import f

foo是一個包(因為它包含__init__.py ),其中包含一個名為file1模塊。 或者,您可以在__init__.py使用相對導入:

from .file1 import f

但這可能會變得混亂,並且在較大的項目中通常不會受到贊賞。

為了實現從包 foo 中的絕對導入,我所做的是將我的類定義移動到py .py 中。 請參閱使用 pip 安裝單個類包而無需 module.pyfile import

root/
 foo/
    __init__.py # where class resides
 setup.py
 README.md
 LICENSE

那我可以做

from foo import f #f is the class previously in the file1.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM