【发布时间】:2014-03-06 18:39:12
【问题描述】:
我想创建一个类,其中实例根据其变量具有不同的方法。
例如:
class Spam:
def __init__(self, eggs):
self.eggs = eggs
那么,如果 Spam 的 self.eggs 为 5,则它应该将 foo 定义如下:
def foo(self):
print(self.eggs)
否则
def foo(self, excited):
if excited:
print("{}!!!!!".format(self.eggs))
else:
print("{}...".format(self.eggs))
目前,我通过在类外部声明两个foo 函数(具有不同名称)并在__init__ 中设置实例作为方法的方法来做到这一点。但是,这会从类定义中删除函数定义,我真的不想这样做。还有其他方法吗?
编辑:实际上下文。
我正在制作一些类来表示图中的节点,其中每个图都可以加权或不加权。
我希望节点有一个link 方法,将另一个节点作为参数,将它们连接在一起。加权图中的节点(即那些self.graph.weighted 是True 的节点)应该有一个link 方法和另一个指定连接边权重的参数。有没有更好的方法来做到这一点?例如,将权重参数设为可选,但存在于所有节点的 link 方法中。
【问题讨论】:
-
基于状态切换 API 并不是一个好主意。
-
@MartijnPieters 我已编辑问题以提供实际上下文。
-
投反对票有什么原因吗?
-
听起来你想要一个基本的图类,并从中派生一个加权图类。或者,如果您认为不值得为加权图创建一个全新的类,只需为
link方法添加一个weight参数,默认为1。