【发布时间】:2011-01-17 19:55:11
【问题描述】:
嘿,我刚开始对此感到疑惑,因为我遇到了一个代码,该代码期望一个具有特定属性集的对象(但没有说明该对象应该是什么类型)。
一种解决方案是创建一个具有代码期望属性的新类,但是当我调用其他代码也需要具有(其他)属性的对象时,我必须创建越来越多的类。
一个更短的解决方案是创建一个泛型类,然后在它的实例上设置属性(对于那些想使用object 的实例而不是创建一个新类的人,因为@987654322 这将不起作用@ 实例不允许使用新属性)。
我想出的最后一个最短的解决方案是创建一个类,其构造函数采用关键字参数,就像 dict 构造函数一样,然后将它们设置为属性:
class data:
def __init__(self, **kw):
for name in kw:
setattr(self, name, kw[name])
options = data(do_good_stuff=True, do_bad_stuff=False)
但我不禁觉得我错过了一些明显的东西......难道没有内置的方法可以做到这一点(最好在 Python 2.5 中支持)?
【问题讨论】:
-
每个使用 Python 的人(除了一些编写 stdlib 的傻瓜)都用大写单词命名他们的类,这有助于人们识别名称所代表的含义。此外,始终从
object继承是一个好习惯,因此您使用的是新式类。 -
是的,我希望这个类看起来像一个数据类型,因为它没有类功能(这也是我故意不使用新式类的原因,因为我没有使用方法解析order 等)但是这个类可能应该有一个大写的名字,你是对的。
标签: python