我正在使用Flask用Python编写一个应用程序,现在在为端点创建资源类的过程中,我得到了Pylint‘太多-多实例-属性’警告。现在我不知道我所做的是否是一种“正确”的编写参考资料的方法。
我将依赖项注入到资源中,如下所示:
api.add_resource(TicketsQuery, '/tickets/query',
'/ticket/query/<int:ticketID>',
resource_class_kwargs={'cleaner': Cleaner(StrategyResponseTickets()),
'machine_cleaner': Cleaner(StrategyResponseMachines()),
'db': soap_caller,
'cache': cache,
'field_map': app.config['FIELD_FILTER_MAP']['TICKETS'],
'endpoint_permission': TicketsQueryPermission
})然后在“资源”中显示为kwargs论点。我还装饰了init中的函数,因为我需要类中的一个变量(来完成装饰本身)。
class TicketsQuery(Resource):
def __init__(self, **kwargs):
# Dependencies
self.cleaner = kwargs['cleaner']
self.machine_cleaner = kwargs['machine_cleaner']
self.db = kwargs['db']
self.cache = kwargs['cache']
self.field_map = kwargs['field_map']
self.endpoint_permission = kwargs['endpoint_permission']
# Permissions of endpoint method calls, implemented using wrapper
self.get = authorization_required(self.endpoint_permission, UserType.GENERIC_EMPLOYEE)(self.get)
self.post = authorization_required(self.endpoint_permission, UserType.GENERIC_EMPLOYEE)(self.post)
def get(self, permission_set: TicketsPermissionSet, ticketID=-1):这是用烧瓶编写参考资料的正确方法吗?还是有一个更好的结构可依循?任何洞察力或技巧都将受到赞赏!
发布于 2021-11-25 12:06:05
不要因为林特的警告而气馁~这是为了提醒你坚持一种特定的风格。如果在项目的根文件夹中还没有一个.pylintrc,那么linter将使用默认规则;这只是一种对“例如变量太多”的样式警告--即太多的self.*--这是一个100%的self.*,与烧瓶无关。
您可以取消对此的警告,但通过在类的# pylint: disable=too-many-instance-attributes上添加注释def __init__(...):来使其对任何其他人保持活动状态。
如果您想要一种更灵活的方法来解决这个问题,请在项目的根文件夹中运行pylint --generate-rcfile (假设您已经使用了pip install pylintd并且这些消息不只是来自pip install pylint)来生成.pylintrc。
在这里,您可以将错误的代码R0902添加到disable=列表~即disable=R0902,或者如果禁用多个警告(这些警告接受全局,那么只需禁用所有R*消息,那么最好只在确定知道要关闭哪些警告时才能这样做)。或,您可以在[DESIGN]下找到一行max-attributes=,并将该数字设置/增加到您认为更合理的更高的值。
作为参考,如果您想进一步探索~ 下面是从pylint中可以得到的警告列表,您可以通过错误too-many-instance-attributes的名称或其代码R0902搜索该信息的参考资源,以及这是一个样品,您可以通过代码(即R0902 )来查找影响该警告的属性。
最后,这里还有另一篇关于相同的pylint错误消息的文章,如果您想要更多的例子~ 如何处理Pylint的“太多实例-属性”消息?。
https://stackoverflow.com/questions/70110163
复制相似问题