gpt4 book ai didi

python - 在这里什么被认为是更好的命名风格?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:50 24 4
gpt4 key购买 nike

我正在为 Tkinter 编写一个扩展,并且在我应该为我要添加的一些新属性使用哪种命名风格上发生冲突。

这是第一种命名风格,为所有新属性赋予前缀 sw_

import Tkinter as tk

class New (tk.Button, object) :
def __init__ (self, par) :
tk.Button.__init__(self, par)

attrnames = ['attr0', 'attr1', 'attr2', 'attr3']

for name in attrnames :
newname = 'sw_' + name
setattr(self, newname, None)


root = tk.Tk()

new = New(root)
new.pack()

new.sw_attr0

root.mainloop()

对于第二种命名风格,我制作了 SW 类的所有新属性。然后我创建了一个 SW 的实例作为我的新类的属性。

import Tkinter as tk

class SW (object) :
def __init__ (self) :
attrnames = ['attr0', 'attr1', 'attr2', 'attr3']

for name in attrnames :
setattr(self, name, None)

class New (tk.Button, object) :
def __init__ (self, par) :
tk.Button.__init__(self, par)

self.sw = SW()


root = tk.Tk()

new = New(root)
new.pack()

new.sw.attr0

root.mainloop()

最佳答案

Python's style guide是要遵循的事情——做最可读、最明智的事情。也就是说,它确实建议您遵循任何项目风格而不是官方 Python 风格,但在做新事情时要使用 Python 风格。

Python 已经将名称间距作为该语言的一项功能(通过导入),因此完全不需要前缀。

在你的情况下,使用前缀是不好的——这意味着你打破了 Python 的整个鸭子类型意识形态和面向对象的思想。您需要用户知道他们正在使用您的类添加的属性,而不是最初存在的属性,这与他们无关。让类(class)发挥作用,并避免对他们来说不重要的额外内容。它只是一个对象。他们应该只使用它而不关心实现。

关于python - 在这里什么被认为是更好的命名风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com