我有一个包含具有默认值的某些属性的类实例。我希望以后可以通过将它们与键和值的库进行比较,然后将类变量更改为相应的库值(如果存在)来更改这些类方法的值。
理想情况下,我希望能够在一个对象中创建一个函数,该对象将库作为参数并相应地更改值。但是我感觉这是不可能的。
有可能吗?如果是这样,怎么办?而且如果不可能,我如何制作一个单独的函数来接收一个对象和一个库,并将对象属性配置为库属性。 (请注意,我不想添加或删除任何属性,只需更改值即可。)
class assignment(object):
def __init__(self, id):
self.id = id
def configureAssignment(self, configFile):
with open(configFile, "r") as inputfile:
config = json.loads(inputfile.read())
print("config is:", config)
for key in config:
try:
self.key = key
except:
log("error, non-existent variable defined")
答案 0 :(得分:0)
您可以使用hasattr()
来检查您的类是否具有必需的变量,然后再尝试进行设置:
if hasattr(self, key):
setattr(self, key, value)
但是,老实说,处理此问题的更安全方法是使用dict
键和值初始化类,并让您的函数(和程序的其他方面)操纵 而不是自己操纵类属性。