我想编写一个类,在访问某个特定方法时删除对该方法的访问或抛出一个错误,并且这种行为应该由类实例化时设置的变量进行调节
因此,在代码中,我希望如下所示:
class NewClass:
def __init__(self, has_non_available_method):
self.has_non_available_method = has_non_available_method
def some_method(self):
if self.has_non_available_method:
raise SomeError()
这很好,但是,如果我想有两个这样的方法,那么我必须复制粘贴到每个方法这2行。这“似乎不是很复杂”,我想知道是否存在一种“更好的”/“干燥的方法”
我考虑过使用decorator,但decorator在类执行时执行,因此它们似乎不适合此任务,因为属性has_non_available_method
(在本例中)将不会在该点设置
一个装饰师是完美的
使用装饰器
decorate_all_functions
,因此您不需要将装饰本身复制粘贴到每个类方法中李>代码:
结果:
使用del
delattr
或del
动态删除类方法李>代码:
结果:
您可以使用decorator使此行为更加动态
相关问题 更多 >
编程相关推荐