PEP8和PyQt,如何协调功能大写?

Col*_*lin 32 python coding-style pyqt pep8 pyqt4

我开始在一些项目中使用PyQt,而且我遇到了风格困境.PyQt的函数使用驼峰的情况,但我更喜欢遵循的PEP8表示使用下划线和函数名称的全部小写.

所以一方面,我可以继续关注PEP8,这意味着我的代码将混合函数调用驼峰大小写和下划线函数,甚至我的类也会有混合函数名,因为我需要重载函数如mousePressEvent .或者,我可以打破PEP8,并以一致性的名义为我的所有函数名称采用驼峰案例.

我意识到这是主观的,这真的是我个人喜欢的,但我喜欢听别人说他们做了什么以及他们选择这样做的原因.

Ale*_*lli 31

在你的鞋子里,我不会打你的框架,就像,作为一般原则,我不打市政厅;-).我碰巧分享你对pEP 8指定的小写下划线函数名的偏好,但当我在一个强制不同大小写风格的框架中编程时,我也辞去采用那种风格,因为我无法说服采用"更好"风格的框架,风格不一致(随意混合不同风格)真的更糟糕.

当然,如果您使用多个框架,某些混合是不可避免的......例如,PyQt及其camelcase,以及标准Python库函数及其小写和下划线! - ).但是,由于像Qt这样的框架通常是通过子类化来扩展的,而标准的Python库在这种设计中的方面较少,在大多数情况下强制大写形式(因为你需要覆盖一个方法,所以你不能选择一个不同的大写字母),它将被强制使用camelcase(通过Qt),很少使用小写(通过标准的Python库).因此,我认为在这种情况下采用Qt风格仍然是较小的邪恶.


Dae*_*yth 11

pep8文档说明在这种情况下该做什么(强调我的):

应该将新模块和包(包括第三方框架)写入这些标准,但是如果现有库具有不同的样式,则首选内部一致性.


Jey*_*mon 7

2020 年 12 月,随着 Qt 6.0 的发布,Qt for Python 6 / PySide6(Qt 的官方 Python 绑定)也发布了,引入了一个名为__feature__. 使用此选项,您可以拥有具有符合 PEP8 的蛇形案例方法和 true 属性的 Qt 对象。

老式:

table = QTableWidget()
table.setColumnCount(2)

button = QPushButton("Add")
button.setEnabled(False)

layout = QVBoxLayout()
layout.addWidget(table)
layout.addWidget(button)
Run Code Online (Sandbox Code Playgroud)

新的 PySide6 风格:

from __feature__ import snake_case, true_property

table = QTableWidget()
table.column_count = 2

button = QPushButton("Add")
button.enabled = False

layout = QVBoxLayout()
layout.add_widget(table)
layout.add_widget(button)
Run Code Online (Sandbox Code Playgroud)


Joe*_*e D 6

使用最合适的.

如果你是Qt类的子类,或者有一个与它们大量集成的函数UseCamelCase.

否则,use_underscores.

  • 这向代码的读者明确地显示了与Qt连接的内容,以及未连接的内容. (10认同)