作为一个最小的例子,我有一个类示例,其作用类似于一系列其他类的抽象容量.
class Example(object):
def __init__(self,**kwargs):
for key,value in kwargs.items():
setattr(self,key,value)
class Test(Example):
def __init__(self,foo='bar'):
super(Test,self).__init__(foo=foo)
在实际案例中,Example做了更多的事情.
有没有办法在测试时通知PyCharm Test会有一个字段Test.foo甚至更好,让它知道foo应该是一个字符串?
需要明确的是,考虑将示例中的字段设置委托给Test不可能.
我最接近的是Epydoc的@ivar,但是我无法让它发挥作用
解决方法
正如其他人所说,你不能.但是,您可以告诉PyCharm使用@DynamicAttrs接受缺少的属性:
class Example(object):
"""
@DynamicAttrs
"""
def __init__(self,**kwargs):
for key,value in kwargs.items():
setattr(self,value)
更新:
如果python3.5是一个选项,请参阅this question关于使用动态属性的类型提示.