我可以在没有类的情况下扩展泛型文件吗?

2024-05-28 20:40:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通用python文件,其中包含一些基本函数。它没有class-只有def

我还有几个特定的文件,它们使用与通用文件相同的函数,有时还扩展/替换通用文件中的函数。同样,它们没有任何类。它们只是导入泛型函数

当我导入这些文件时,我必须像这样使用它们:

import genericFile as gf
import specificFile as sf

gf.doSomething()
gf.doSomethingElse() # BUG - This was replaced by a specific one.
# I should have used "sf.doSomethingElse()", but I'm a meatbag who makes mistakes
....
sf.doLastThing() # ERROR - This should be generic. There is no specific one.

是否有任何方法可以将第一个通用文件中的所有函数导入到特定文件中,并且仅导入特定文件,以保持代码干净、可读且无错误

我知道这在课堂上是很容易做到的,但我想知道是否有人支持这种特殊情况。它可能类似于C中的#include


Tags: 文件函数importdefassfthisone
3条回答

这应该起作用,因为第二次导入中的函数将覆盖第一次导入中的函数:

from genericFile import *
from specificFile import *

doSomething()
doSomethingElse()
doLastThing()

听起来您需要from x import *from x import func_a, func_b的组合:

from genericFile import *
from specificFile import doSomethingElse

如果genericFile包含doSomethingdoSomethingElse,第一行将使这两个选项都可用(您可以像doSomething()doSomethingElse()一样使用它们,而不使用前缀genericFilegf

如果specificFile包含doSomethingElse,则第二行将覆盖范围中的doSomethingElse。现在,如果您调用doSomethingElse(),它将调用来自specificFile

仅从所需文件导入所需的函数 e、 g

from gebericFile import doSomething, doLastThing
from specificFile import doSomethingElse

doSomething()
doSomethigElse()
doLastThing()
也许你需要考虑一下你的项目/包的结构更好。

相关问题 更多 >

    热门问题