像字典一样使用空白类是否合理?为什么会有人这么做?

  • 本文关键字:是否 字典 一样 空白 python
  • 更新时间 :
  • 英文 :


我正在一个旧的Python代码库上工作。我没有与任何以前在代码库上工作过的人联系,所以我不知道为什么以前的开发人员做了他们所做的事情。

在代码库中,有一个"空白"类,其使用方式与字典类似。下面是一个简单的例子。

# Defining a "blank" class
class blank:
pass
items = blank()
# There is a function to "add" to items by using setattr
def addItem(name, item):
setattr(items, name, item)
addItem("att1", obj1)
addItem("att2", obj2)
# Later, items is used like this
items.att1.someFunction()
items.att2.otherFunction()

以这种方式使用类而不是字典有什么优点或缺点(如果有的话)?

这很奇怪,但它工作,没有任何问题。如果我要说什么反对的话,那就是你可以直接使用字典,使用getitem/setitem语法,而不是getattr/setattr。有一点想家的javascript开发者的代码味。

现代Python(3.3+版本)中的替换使用types.SimpleNamespace,实例,记录在附加实用程序类和函数:

SimpleNamespace可作为class NS: pass的替代品。

最新更新