Re: [問題] decorator class in a class

作者: tsaiminghan (tsaiminghan)   2022-11-21 11:26:36
後來發現缺少的self,可以透過Descriptor把它加回來
===========================
class T1(object):
def __init__(self, func):
self.func = func
def __get__(self, obj, cls=None):
self.obj = obj
return self
def __call__(self, *arg, **kw):
return self.func(self.obj, *arg, **kw)
class A(object):
x = 2
@T1
def func(self):
print(self.x)
a = A()
a.func()
==============================
作者: pent (有人試我的密碼,幹)   2022-11-21 16:32:00
在執行上,會有怎樣的差別?
作者: poototo (poototo)   2022-11-23 01:03:00
要留意,a=A(), b=A(), ab兩者的func是指向同一T1實例ab如果有更多self.obj的操作,可能會有副作用沒有太高尚大的需求,把T1當作管理不同修飾函數之用我想很實用了

Links booklink

Contact Us: admin [ a t ] ucptt.com