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