类方法的外部包装器的参数“self”未填充

问题描述 投票:0回答:0

我正在 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 参数。我还创建了这两个类的实例。

python class oop pycharm python-decorators
© www.soinside.com 2019 - 2024. All rights reserved.