我希望创建一个干净的“智能”方法,它执行特定的操作而不传递参数。我有一些原则上可以工作的代码如下:
class Foo():
def __init__(self, spam='spam', ham='ham'):
self.spam = spam
self.ham = ham
def bar(self, arg):
# spam operation
if arg == self.spam:
return self.spam*2
# ham operation
elif arg == self.ham:
return self.ham*3
请注意,bar
方法是为了对spam
和{
不幸的是,我不得不使用foo
两次来访问bar
中的特定操作,这既尴尬又乏味。有没有一种更干净的Python式的方法可以在不传递参数的情况下得到相同的结果?例如,是否可以重载dot(.)运算符以获得相同的结果:
# Ideal 1
foo = Foo()
foo.bar.spam # bar knows to use spam operation
foo.bar.ham # bar knows to use ham operation
甚至更好
# Ideal 2
foo = Foo()
foo.spam.bar # bar knows to use spam operation
foo.ham.bar # bar knows to use ham operation
编辑:更新以参数化选项。在
以下是使用对象组合的方法:
结果:
^{pr2}$相关问题 更多 >
编程相关推荐