这个名为 start_party 的函数并不属于任何类,一个打印音乐的独立函数,告诉参与者做一些有趣的事情,如跳舞或唱歌。
人可以像派对参与者一样,有感觉,有两种状态:连接和断开连接。可以告诉人根据外部功能执行动作(方法);因此当人执行动作时,它首先感觉到连接,参与外部功能,无论要求实现哪种方法。外部功能停止(开始派对结束......),因此人们感到与这个令人难以置信的时刻脱节,因为它通过打印让我们知道。
所有这些经验都实现如下:
class Feeling():
def __init__(self):
self.data_in = 'into connection'
self.data_out = 'out of connection'
class Person():
def __init__(self):
self.feeling = Feeling()
def execute(self, outer_function, inner_function):
print(self.feeling.data_in)
outer_function(self, inner_function)
print(self.feeling.data_out)
def dance(self):
print(' └[∵┌]└[ ∵ ]┘[┐∵]┘ ')
def sing(self):
print('( ◜◒◝ )')
def start_party(party_participant, inner_function):
print('♬♩♪♩')
party_participant.inner_function()
print('♬♩♪♩')
liz = Person()
liz.execute(start_party, dance)
我最好的尝试并且不编译,它给了我一个:
NameError:name' dance'未定义
但主要问题仍然不是编译,而是设计。 (虽然我也需要修复编译。)
期望的输出应该是:
into connection
♬♩♪♩
└[∵┌]└[ ∵ ]┘[┐∵]┘
♬♩♪♩
out of connection
答案 0 :(得分:3)
使用getattr()
让类方法执行如下:
def start_party(party_participant, inner_function):
print('♬♩♪♩')
getattr(party_participant, inner_function)()
print('♬♩♪♩')
class Feeling():
def __init__(self):
self.data_in = 'into connection'
self.data_out = 'out of connection'
class Person():
def __init__(self):
self.feeling = Feeling()
def execute(self, outer_function, inner_function):
print(self.feeling.data_in)
outer_function(self, inner_function)
print(self.feeling.data_out)
def dance(self):
print(' └[∵┌]└[ ∵ ]┘[┐∵]┘ ')
def sing(self):
print('( ◜◒◝ )')
def start_party(party_participant, inner_function):
print('♬♩♪♩')
getattr(party_participant, inner_function)()
print('♬♩♪♩')
liz = Person()
liz.execute(start_party, 'dance')
into connection
♬♩♪♩
└[∵┌]└[ ∵ ]┘[┐∵]┘
♬♩♪♩
out of connection