gpt4 book ai didi

python - 将方法从文件导入到类中

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:04 24 4
gpt4 key购买 nike

我正在用 Twisted 制作一个 IRC 机器人,但我遇到了一个问题。我想将函数从一个单独的文件导入到我的主类(继承 irc.IRCClient 的那个)中,以便它们可以用作方法。我想到了两种可能的解决方案,但它们似乎都有些新奇,而且都存在问题。

解决方案1:将类中的函数放在一个单独的文件中,将其导入到我的主文件中,让我的主类继承该类。这个解决方案的问题是我最终会继承很多类,每次为机器人创建新模块时我都必须修改我的主类。

解决方案 2:将函数放在一个单独的文件中,将其导入我的主文件并将每个导入的函数分配给一个变量。这很烦人,因为我必须在我的主类中为每个我希望类从其他地方导入的方法设置一个变量。

示例:

导入这个.py

class a():
def somemethod(self):
print "blah"

主要.py

import importthis
class mainClass(irc.IRCClient):
thisisnowamethod = importthis.a()

如您所见,这两种方法(没有双关语意)都需要大量愚蠢的工作来维护。有没有更聪明的方法来做到这一点?

最佳答案

class mainClass(irc.IRCClient):

from othermodule import a, b, c
# othermodule.a, b, and c are now methods of mainClass

from anothermodule import *
# everything in anothermodule is now in mainClass

# if there are name conflicts, last import wins!

这是有效的,因为 import 只是将符号导入命名空间,而不关心它是什么类型的命名空间。模块、类、函数 -- import 都是一回事。

当然,othermodule 中的函数必须编写为接受 self 作为它们的第一个参数,因为它们将成为 mainClass 实例的实例方法. (您可以使用@classmethod 或@staticmethod 来装饰它们,但我还没有尝试过。)

这是一个很好的“混合”模式,您不一定要使用多重继承和可能导致的麻烦。

关于python - 将方法从文件导入到类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918495/

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