如何将实例方法列表赋值给Python类变量?
问题:将实例方法列表移至类级别时的调用错误
我有一个可正常运行的类:
class Point: def __init__(self): self.checks = [self.check1, self.check2] def check1(self): return True def check2(self): return True def run_all_checks(self): for check in self.checks: check()
由于实例变量checks并不针对特定实例,我想将其移至类级别,于是做了如下尝试:
class Point: def __new__(cls, *args, **kwargs): cls.checks = [cls.check1, cls.check2] return super(Point, cls).__new__(cls, *args, **kwargs) def check1(self): return True def check2(self): return True def run_all_checks(self): for check in self.checks: check()
这个类定义没有语法错误,但运行时抛出了如下错误:
TypeError: Point.check1() missing 1 required positional argument: 'self'
更新:问题已解决
借助方案,我实现了支持继承的正确写法:
class ParentFuncs: def check1(self): print("check1") def check2(self): print("check2") checks = [check1, check2] def run_all_checks(self): for check in self.checks: check(self) class ChildFuncs(ParentFuncs): def check3(self): print("check3") def check4(self): print("check4") checks = ParentFuncs.checks + [check3, check4] ChildFuncs().run_all_checks() # Output check1 check2 check3 check4
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

