【发布时间】:2013-05-23 15:09:31
【问题描述】:
假设我有一个包含一堆方法的文件,例如 bundle_methods.py:
def one(x):
return int(x)
def two(y)
return str(y)
有没有办法通过导入模块整体或选择方法来获取该组方法,并将导入的方法转换为类?
例如伪明智的
def make_class_from_module(which_module_or_listing_of_methods):
class = turn_module_to_class(which_module_or_listing_of_methods)
return class
所以
BunchClass = make_class_from_module(bunch_methods)
在我看来这听起来很合理,但它的可行性如何?如果我应该这样做,我将如何开始做这样的事情,或者我的替代方案是什么?
我为什么要这样做?现在这是一个心理和学习练习,但我的具体用途是采取方法并创建flask-classy FlaskView classes。我想可能会采取一些方法,并可能在 FlaskView 的不同上下文中使用和重用它们
【问题讨论】:
-
你为什么要这个?没有一个函数有任何状态(就你所展示的而言),所以在这里有一个类真的没有任何目的。
-
这门课你打算做什么?
-
补充@mgilson 所说的,模块已经是
module类型的类的实例。将无状态函数的容器类与另一个容器类一起包装或变异有什么价值? -
我不明白
flask-classy是这样做的理由。我怀疑这是用这样的东西实现的。 -
在思考了为什么有人要这样做之后,我突然意识到将模块转换为类允许类继承。该模式可能不值得推荐,但它肯定是一种选择。
标签: python class function methods module