gpt4 book ai didi

python - 在类中设置可在运行时修改的静态字典的 Pythonic 方法是什么?

转载 作者:行者123 更新时间:2023-12-01 01:48:55 25 4
gpt4 key购买 nike

我正在替换类中的静态方法:

class Foo(object):

@staticmethod
def num_examples(subset='train'):
if subset == 'train':
return 6200
elif subset == 'validation':
return 1900
elif subset == 'test':
return 1900
else:
raise ValueError('Invalid data subset "%s"' % subset)

我希望 num_examples 位于一个由静态方法调用的字典中,该静态方法具有与当前 num_examples 方法相同的签名,但可以在运行时初始化。

Foo.num_examples('bar', 86) 
print(Foo.num_examples('bar'))

我使用的是 Python 3.x。

最佳答案

这是并且永远是语法错误:

Foo.num_examples('bar') = 86

您不能分配给 Python 中的函数调用。您必须调整代码才能像使用字典一样使用字典。

Foo.num_examples['bar'] = 86

您仍然可以为“获取”部分编写遗留接口(interface),但“设置”部分无法按照您的要求完成。为了提供遗留接口(interface),您可以定义并使用“可调用字典”:

import warnings

notset = object()

class MyDict(dict):
def __call__(self, key, val=notset):
if val is notset:
warnings.warn('this syntax is deprecated')
return self[key]
else:
self[key] = val

关于python - 在类中设置可在运行时修改的静态字典的 Pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935092/

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