-1

我无法理解 Python 中的包。特别是,在 Python 的一个包中的一个模块中是否可以有多个类。例如:

Kitchen/            Top-level package
    __init__.py     Initialize the package kitchen
    Fridge.py       module Fridge.py
        Food        This is a class in module Fridge
        Temperature This is another class in module Fridge
    Recipe.py
        BeefStake   This is a class in module Recipe.py

在 中__init__.py,代码将是:

from Fridge import Food, Temperature
from Recipe import BeefStake
__all__ = ['Fridge', 'Recipe']

然后我会创建一个温度类的实例

from Kitchen import *
f = Food()
T = Temperature()

我试过这个,只做f = Food()作品。另一个出现了错误,例如NameError: name 'Temperature' is not defined

如果有人知道是否有可能在 Python 的包中的一个模块中有 2 个这样的类。如果是这样,这种方法可能存在什么问题?

4

2 回答 2

0

您向我们展示的代码不适用于 。您明确地将其放入:FoodTemperatureKitchen

__all__ = ['Fridge', 'Recipe']

这意味着,即使您已导入FoodTemperatureinto Kitchen,也不会重新导出它们。因此,f = Food()将提出一个NameError.

如果您将其更改为,请说:

__all__ = ['Food', 'Temperature']

现在一切正常。

我的猜测是,在您的真实代码中,您犯了两个错误之一:

  • 忘记包含Temperature在 中__all__,就像您对两者FoodTemperature此处所做的一样,或者
  • 某处有错字,例如t = temperature()小写t

通常我会怀疑第一个更有可能......但鉴于你的大小写不一致,并且拼写错误BeefSteak,我会在这里检查第二个。

于 2013-08-02T01:10:06.943 回答
0

是的,你可以在 python 的一个模块中拥有多个类

于 2013-08-02T01:16:25.973 回答