Python 我如何定义一个类,在这个类中,实例化时提供给它的参数成为它的实例变量?
我想创建一个类,在这个类中,实例的属性是在实例化时定义的 一开始我觉得我应该这样做Python 我如何定义一个类,在这个类中,实例化时提供给它的参数成为它的实例变量?,python,attributes,instantiation,Python,Attributes,Instantiation,我想创建一个类,在这个类中,实例的属性是在实例化时定义的 一开始我觉得我应该这样做 class TestData(object): # Example via http://stackoverflow.com/questions/2641484/class-dict-self-init-args def __init__(self, *args, **kwargs): super(TestData, self).__init__() for arg i
class TestData(object): # Example via http://stackoverflow.com/questions/2641484/class-dict-self-init-args
def __init__(self, *args, **kwargs):
super(TestData, self).__init__()
for arg in args:
self.arg = arg
但这会将所有参数分配给同一个属性
self.arg
,这是行不通的。根据评论中的建议进行修改,我找到了适合我的解决方案:
class TestData(object): # Example via http://stackoverflow.com/questions/2641484/class-dict-self-init-args
def __init__(self, *args, **kwargs):
super(TestData, self).__init__()
self.__dict__.update(kwargs)
for arg in args:
setattr(self, arg, arg)
如果在实例化之后需要添加更多的属性,那么可以通过调用
setattr(instancename,arg,val)
来完成。现在我想了解如何定义一个类方法来调用它,它可以轻松地打印出所有的属性。在这两种情况下都不需要调用setattr\uuuu
。通常,您应该避免直接调用双下划线魔术方法。只需执行setattr(self,arg,arg)
。与其覆盖dict,不如更新它:self.\uu dict\uuu.update(**kwargs)
。