我正在替换类中的静态方法:
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/