python - python如何执行调用从同一对象调用另一个方法的函数的对象方法
问题描述
有一个名为start_party的函数,它不属于任何类,它是一个打印音乐的独立函数,告诉派对参与者做一些有趣的事情,比如跳舞或唱歌。
一个人可以像派对参与者一样适应,它有两种状态:进入连接和脱离连接。可以告诉一个人根据外部功能执行一个动作(方法);因此,当人执行动作时,它首先会感觉到内部的联系,并以要求实现的任何方法参与到外部功能中。外部功能停止(开始派对结束......),因此 Person 感觉与这个令人难以置信的时刻脱节,因为它通过打印让我们知道。
所有这些经验的实现如下:
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:名称“舞蹈”未定义
但主要问题仍然不是编译,而是设计。(虽然我也需要修复编译。)
期望的输出应该是:
into connection
♬♩♪♩
└[∵┌]└[ ∵ ]┘[┐∵]┘
♬♩♪♩
out of connection
解决方案
用于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
推荐阅读
- django - Django REST Serializer 使用错误的模型进行序列化
- python - python文件写入程序运行时如何更新桌面上的文件大小
- javascript - 使用 d3.js 更新表数据
- c# - C#捕获从不在进程中的函数返回的异常?
- r - 如何设置仅在输入 3 时才显示集合向量的函数?
- javascript - 如果 URI 没有改变,例如在单页应用程序上,如何检测用户是否在新页面上?
- angular - Angular Kendo UI 全局访问
- php - 内连接循环通过
- git - 如何 git rebase 从另一个分支直接到 master 分支?
- javascript - 受控数字比例映射