如何动态组合和访问Python中的类属性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何动态组合和访问Python中的类属性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1247字,纯文字阅读大概需要2分钟。
内容图文
![如何动态组合和访问Python中的类属性?](/upload/InfoBanner/zyjiaocheng/707/7a5ad8742ed948c18022d4be327f5aa6.jpg)
参见英文答案 > How to access object attribute given string corresponding to name of that attribute 2个
我有一个Python类,其属性名为:date1,date2,date3等.
在运行时,我有一个变量i,它是一个整数.
我想要做的是根据i的值在运行时访问适当的日期属性.
例如,
如果我== 1,我想访问myobject.date1
如果我== 2,我想访问myobject.date2
我想为类而不是属性做类似的事情.
例如,我有一堆类:MyClass1,MyClass2,MyClass3等.我有一个变量k.
如果k == 1,我想实例化一个新的MyClass1实例
如果k == 2,我想实例化一个新的MyClass2实例
我怎样才能做到这一点?
编辑
我希望避免使用巨大的if-then-else语句来选择合适的属性/类.
有没有办法在Python中使用变量的值动态编写类名?
解决方法:
在运行时不知道名称时,可以使用getattr()访问属性:
obj = myobject()
i = 7
date7 = getattr(obj, 'date%d' % i) # same as obj.date7
如果将编号的类保存在名为foo的模块中,则可以再次使用getattr()按编号访问它们.
foo.py:
class Class1: pass
class Class2: pass
[ etc ]
bar.py:
import foo
i = 3
someClass = getattr(foo, "Class%d" % i) # Same as someClass = foo.Class3
obj = someClass() # someClass is a pointer to foo.Class3
# short version:
obj = getattr(foo, "Class%d" % i)()
说了这么多之后,你真的应该避免这种事情,因为除了阅读整个代码库之外,你永远无法找到这些编号属性和类的使用位置.你最好把所有东西放在字典里.
内容总结
以上是互联网集市为您收集整理的如何动态组合和访问Python中的类属性?全部内容,希望文章能够帮你解决如何动态组合和访问Python中的类属性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。