使用@ property.setter装饰器将函数传递给类

时间:2016-09-13 15:56:21

标签: python python-3.x callback python-3.5

我正在创建一个类,我想声明一个包含函数的变量,我想在对某些信息进行一些处理之后调用它们。但我不知道如何使用属性装饰器这个情况。 我已经有了这段代码:

class MyClass:
    def __init__(self):
        self.callback = None
    def run():
        #do something here...
        result = self.callback(result)
        print(result)

def func1(result):
    result = result ** 2
    return result

def func2(result):
    result = result ** 4
    return result


class1 = MyClass()
class1.callback = func1
class1.run()
class1.callback = func2
class1.run()

我的问题是我如何在此代码中使用@property@property.setter以及@property.getter decorator for self.callback?

1 个答案:

答案 0 :(得分:0)

我基于此代码看不到properties的需要,但无论如何它都在这里。

class MyClass:
    def __init__(self):
        self.__callback = None

    @property
    def cb(self):
        return self.__callback

    @cb.setter
    def cb(self, new_cb):
        self.__callback = new_cb