【发布时间】:2020-02-04 05:59:18
【问题描述】:
假设我们将 A 类定义为
class A:
KEY_A = "KEY_A"
KEY_B = "KEY_B"
__methodDict = {KEY_A : __method_a,
KEY_B : __method_b}
def __init__(self):
self.variableABC = 'ABC'
def __method_a(self):
print("method a")
def __method_b(self):
print("method b")
当上面的代码运行时,编译时错误会提示用户__method_a 不存在。不,这不是因为 python 对 A 类的内部结构一无所知。
那么,我的问题是,如何将 __methodDict 定义为 A 类的常量来存储 A 类的 __method_a 和 method_b?
【问题讨论】:
-
您可以通过使用
@classmethod装饰这些方法来使它们成为类方法,然后将它们引用为A.__method_a。但是,这限制了那里的使用。如果您需要它们作为实例方法,您可以定义一个初始化器__init__并在其中设置self.__methodDict = { ... self.__method_a ... } -
@rayepps 当时
A没有定义 -
尝试在
__methodDict定义之前移动引用的方法,它现在应该可以工作了 -
@dcg,谢谢!确实有效!
标签: python class dictionary constants