装饰器问题

2019-03-21 23:43:11 +08:00
 sasic
关于 Python 装饰器问题
想在同一 class 下,用方法 A 装饰方法 B,功能比如说:在 B 执行完,print 属性 C 可行吗?
1441 次点击
所在节点    Python
4 条回复
sasic
2019-03-21 23:46:28 +08:00
class school():
def __init__(self, c):
self.c=c
def A
def B
aijam
2019-03-22 00:24:20 +08:00
yes and no。这只是一个 anti-pattern workaround,注意这里的 decorator 不是 method。虽然也可以定义成 method,但是需要更多的 hack。
https://gist.github.com/czheo/a976c92f60c6757f6e9dd316174eea6f
sasic
2019-03-22 09:02:27 +08:00
@aijam 非常感谢,可以举个例吗?网址好像打不开
shyrock
2019-03-26 18:14:55 +08:00
是不是这样?
class school():
def __init__(self,c):
self.c = c
def A(func):
def dec(self):
result = func(self)
print(self.c)
return result
return dec
@A
def B(self):
print('exec B()')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/547223

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX