【发布时间】:2011-09-17 19:53:35
【问题描述】:
我正在为 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()
【问题讨论】:
-
将属性命名为
attr0, attr1, attr2有什么问题。包含 sw 的愿望背后是什么?做到这一点的最佳方法取决于您首先尝试这样做的原因。 -
这个问题值得
naming-conventions标签 -
Winston,我基本上是在尝试组织名称空间,以便用户可以轻松分辨 Tkinter 和扩展程序之间的区别。
-
老实说,我认为您不想标记您的扩展程序和 Tkinter 之间的明显断开。从用户的角度来看,它是一个对象。谁编写代码并不重要。
标签: python class attributes namespaces naming-conventions