【发布时间】:2018-10-20 23:44:57
【问题描述】:
我有一个公开两种方法的类。这些方法实际上是视觉语法糖,它们最终指向行为不同的相同代码,具体取决于它接收到的有效负载:
class Action:
def on(self):
self.action(1)
def off(self):
self.action(2)
def action(self, payload):
# a long function which does many things and uses the payload from on() and off()
print(payload)
a = Action()
a.on()
a.off()
有没有办法定义on() 和off() 以便它们指向相同的代码(action() 中的那个),根据被调用的方法的名称的行为会有所不同?
我当然可以在通话中传递动作:
class Action:
def action(self, what):
payload = 1 if what == 'on' else 0
# a long function which does many things and uses the payload from on() and off()
print(payload)
a = Action()
a.action('on')
a.action('off')
但我想保留类方法的开/关结构。
【问题讨论】:
-
如果
action被on或off以外的其他东西调用会发生什么? -
“根据被调用方法的名称,其行为会有所不同”——这将是一个令人头疼的维护问题。你有什么问题?
-
我没有发现你已经拥有的东西有什么问题...特别是考虑到
on和off的有效负载不同。 -
一般来说,no Python 对象对绑定到它的名称(或名称)一无所知。你所拥有的是正确的方法。
标签: python python-2.7 class methods