gpt4 book ai didi

python - 有没有办法在创建类(不是实例)时调用(静态)方法?

转载 作者:行者123 更新时间:2023-11-28 20:52:01 26 4
gpt4 key购买 nike

再一次,有点惊讶没有找到这个问题的答案......

我提出这个问题的真实原因是:我在一个类中有一个常量字典

class MySQLConstants():

DECIMAL = 0
TINY = 1
SHORT = 2
LONG = 3
FLOAT = 4
DOUBLE = 5

... etc.

我想要一本字典,这样我就可以在给定数字的情况下找到常量……很简单:

fieldTypeDic = {}
for fieldType in dir( MySQLConstants ):
value = getattr( MySQLConstants, fieldType )
fieldTypeDic[ value ] = fieldType

...在类定义语句执行后,将其设为 MySQLConstants 的 @static 方法并通过 MySQLConstants.createDic() 调用它就足够容易了...但我只是想知道是否有任何方法获得一个方法,不可避免地@static,在创建一个类(注意我不是谈论创建此类的实例!)时运行...

最佳答案

这是一个使用元类的解决方案:

class ConstantDictMeta(type):
def __new__(cls, name, bases, dct):
fieldTypeDic = dict((v, k) for k, v in dct.items() if k.isupper())
dct["fieldTypeDic"] = fieldTypeDic
return type.__new__(cls, name, bases, dct)

class MySQLConstants():
__metaclass__ = ConstantDictMeta
DECIMAL = 0
TINY = 1
SHORT = 2
LONG = 3
FLOAT = 4
DOUBLE = 5

>>> MySQLConstants.fieldTypeDic
{0: 'DECIMAL', 1: 'TINY', 2: 'SHORT', 3: 'LONG', 4: 'FLOAT', 5: 'DOUBLE'}

关于python - 有没有办法在创建类(不是实例)时调用(静态)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com