假设我创建了一个类的实例,并希望为其公共属性分配一些值。通常,这样做:
class MyClass:
def __init__(self):
self.name = None
self.text = None
myclass = MyClass()
myclass.name = 'My name'
但是,如果编写一个以类为参数的函数,并且我希望动态地为该类的公共属性分配一些值,即通过变量和循环(不知道有多少个或它们被调用了什么)
显而易见的是:
myclass = MyClass()
myclass['name'] = "My name"
但那不管用。
有什么想法吗?
在读取被拒绝的Syntax For Dynamic Attribute Access之后,我使用了一个mixin类,该类提供对对象属性的字典式访问:
同时仍然能够直接设置属性:
然后可以动态设置它们:
使用
dir
和setattr
应该可以完成这项工作但是要小心,因为这段代码还将
'__doc__', '__init__', '__module__'
属性设置为“Foo Bar”。因此,您必须注意避免使用dir
(特别是那些以__
双下划线开头和结尾的)给您的某些东西。相关问题 更多 >
编程相关推荐