0

我应该如何实现我的包,以便我可以编写以下内容。

假设我的模块名为 Market。它是我的 python 脚本工作目录中的一个文件夹,名为 goShopping.py

在我的 goShopping.py 中,我希望能够编写以下代码:

import market as mk 

B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()

Banana 和 Apple 是我模块中某个文件中的对象。

模块市场应该怎么写?

假设我在 Module 文件夹中有一个名为 fruits.py 的文件,我在其中定义了 Banana 和 Apple 类。我知道我可以将上面的代码编写如下:

import market.fruits as mk 

B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()

但我不想那样。

作为一种解决方案,我考虑在__init__.py__init.py市场文件夹内部)有一些声明,如下所示:

from fruits import Apple,Banana.

但我收到以下错误:

AttributeError: module 'market' has no attribute 'Banana'

从线:

B = mk.Banana(0.99)

我应该如何构建以及我应该写什么才能根据需要公开对象?

我正在为 iOS 使用 Pythonista。我想知道这是否是问题所在。

4

2 回答 2

0

可能没有导入模块/脚本。这不会导致错误消息。尝试导入一个名为“xyz”的模块,你会发现只要你不尝试访问它就不会出错。

最可能的原因是该模块与您的脚本不在同一个文件夹中,或者不在包含 __init__.py 脚本的子目录中。

您的脚本应该能够导入与自身相同文件夹中的任何模块。您还可以从包中导入模块。包是一个文件夹,其中包含一个或多个 python 模块和一个名为 __init__.py 的特殊模块,该模块将文件夹标记为一个包。包文件夹需要在 PYTHONPATH 中或者是当前工作目录的子目录,以便 Python 可以找到它,但子包文件夹不能。

查看这篇文章,它很好地解释了它是如何工作的。

于 2017-02-09T10:42:26.970 回答
0

添加from FolderName.fruits import Apple,Banana放在__init__.py文件夹中对我有用:然后我可以从主项目中调用from FolderName import Apple,Banana

添加from fruits import Apple,Banana放在__init__.py文件夹中对我不起作用

于 2020-01-01T14:38:07.903 回答