具有“计算”属性的类属性 姓名
通过“计算的”名称定义类属性时,例如:
class C(object):
for name in (....):
exec("%s = ..." % (name,...))
与使用 exec 相比,是否有不同的方式来处理众多属性定义? getattr(C, name) 不起作用,因为在类构造期间未定义 C...
When defining class attributes through "calculated" names, as in:
class C(object):
for name in (....):
exec("%s = ..." % (name,...))
is there a different way of handling the numerous attribute definitions than by using an exec? getattr(C, name) does not work because C is not defined, during class construction...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
怎么样:
即定义后进行属性设置。
How about:
That is, do the attribute setting after the definition.
如果你的整个类都是“计算的”,那么我可以建议使用
type
可调用的。 如果您的原始容器是一个字典,这尤其有用:相同的结果
这将为您提供与如果您的需求确实复杂,请考虑元类 。 (事实上,
type
是一个元类=)If your entire class is "calculated", then may I suggest the
type
callable. This is especially useful if your original container was a dict:This would give you the same results as
If your needs are really complex, consider metaclasses. (In fact,
type
is a metaclass =)为此目的使用元类怎么样?
查看问题 100003:什么是 Python 中的元类?。
What about using metaclasses for this purpose?
Check out Question 100003 : What is a metaclass in Python?.