python - 如何处理 R0915: Too many statements (69/50) (too-many-statements) in pylint?
问题描述
我在 PyQt5 中有一个 Python 代码(带有多个图形项的 GUI)。如何缩短代码以适应每个函数推荐的 PEP8 50 语句?将图形项的定义分解为多个功能是否合适?
def __init__(self, pulse_number, on_time, off_time, x, y, offset):
self.offset = offset
self.laser_pulse_n = pulse_number
self.laser_on_time = on_time
self.laser_off_time = off_time
self.laser_x_loc = x
self.laser_y_loc = y
# set window properties
self.setMinimumSize(QSize(250, 300))
self.setWindowTitle("Laser settings")
self.int_validator = QIntValidator()
# LASER
# Create pulse number label
self.pulse_number_label = QLabel(self)
self.pulse_number_label.setGeometry(QRect(10, 0, 80, 20))
self.pulse_number_label.setText("Pulse n.:")
# Create pulse number input box
self.pulse_number_input = QLineEdit(self)
self.pulse_number_input.setGeometry(QRect(60, 0, 40, 20))
self.pulse_number_input.setText(str(self.laser_pulse_n))
self.pulse_number_input.setValidator(self.int_validator)
# Create laser on label...
...
# Apply button
self.validate_button = QPushButton(self)
self.validate_button.setGeometry(QRect(10, 240, 230, 40))
self.validate_button.setToolTip("Click to save settings")
self.validate_button.setFont(QFont('Times', 20))
self.validate_button.setText("Apply")
self.validate_button.clicked.connect(self.validate_settings)
解决方案
我认为有两种解决方案:您可以禁用此警告,因为 PyQT 有点强迫您像这样编写代码。在构造函数中定义每个属性会更清楚,如果创建子函数,attribute-defined-outside-init
无论如何都会收到警告。另一种解决方案是稍微重构并创建一个属性设置器或一个用于设置对象的函数。
即例如,从此:
...
self.validate_button = QPushButton(self)
self.validate_button.setGeometry(QRect(10, 240, 230, 40))
self.validate_button.setToolTip("Click to save settings")
self.validate_button.setFont(QFont('Times', 20))
self.validate_button.setText("Apply")
self.validate_button.clicked.connect(self.validate_settings)
对此:
...
self.validate_button = self.validate_settings
@property
def validate_button(self):
return self.__validate_button
@validate_button.setter
def validate_button(self, validate_settings):
self.__validate_button = QPushButton(self)
self.__validate_button.setGeometry(QRect(10, 240, 230, 40))
self.__validate_button.setToolTip("Click to save settings")
self.__validate_button.setFont(QFont('Times', 20))
self.__validate_button.setText("Apply")
self.__validate_button.clicked.connect(validate_settings)
如果您需要,这具有允许稍后更改属性的优点。
或这个:
...
self.validate_button = QPushButton(self)
self.__init_validate_button()
def __init_validate_button(self):
self.validate_button.setGeometry(QRect(10, 240, 230, 40))
self.validate_button.setToolTip("Click to save settings")
self.validate_button.setFont(QFont('Times', 20))
self.validate_button.setText("Apply")
self.validate_button.clicked.connect(self.validate_settings)
保持类不可变的许可
推荐阅读
- sql - 性能 - 使用 Spring JPA Data 搜索具有 2000 万条记录的表
- google-analytics - 无法在 GA4 UI 上验证用户删除
- python - 模块'eseis'段错误的rpy2导入器
- python - urllb3.excpetions.Location 解析错误
- sed - 如果提供的模式都不匹配,则 sed 删除行
- python - 如果值在列中,如何删除 Pandas 行
- intersystems-iris - 在 REST 消息中发送 PDF 文件
- javascript - 防止 createElement 创建多个相同的图像
- java - RecyclerView 使应用程序崩溃
- javascript - js给元素添加特定样式的标题