我正在 PyCharm 2022.3.3(社区版)中处理我的 Python 项目。 我有我的类方法的包装器,它在方法执行之前从文件加载一些数据并在之后转储它。当我使用这个包装器时有警告。 例子:
import json
def load_and_save(method):
def wrapper(self, *args, **kwargs):
with open(self.filename, 'r') as f:
self.data = json.load(f)
result = method(self, *args, **kwargs)
with open(self.filename, 'w') as f:
json.dump(self.data, f)
return result
return wrapper
class MyClass:
def __init__(self, filename):
self.data = None
self.filename = filename
@load_and_save
def my_method(self, x):
self.data['value'] += x
return self.data['value']
m = MyClass('data.json')
m.my_method(5)
^^^ Type 'int' doesn't have expected attributes 'filename', 'data'
这个例子显示警告
Type 'int' doesn't have expected attributes 'filename', 'data'
我的原始代码以相同的方式显示
Parameter 'self' unfilled
这个例子和我的代码也能正常工作。这是我的错误还是 PyCharm 的错误?
我没有等待任何警告,因为这个包装器已准备好使用 self 参数。我还创建了这两个类的实例。