如何在Python中避免AttributeError并获取未定义的值?
我对Python有点陌生,我想创建一个函数,该函数接受一个参数,该参数是一个包含多个条目的字典。该函数有一个具有某些给定属性(例如:颜色、标题、描述…)的对象。如果参数中的字典包含名为“color”的条目,则应为对象的属性赋予“color”值,否则对象中的属性“color”应为未定义/空。我知道,在JavaScript中,这只需按如下方式完成:如何在Python中避免AttributeError并获取未定义的值?,python,object,Python,Object,我对Python有点陌生,我想创建一个函数,该函数接受一个参数,该参数是一个包含多个条目的字典。该函数有一个具有某些给定属性(例如:颜色、标题、描述…)的对象。如果参数中的字典包含名为“color”的条目,则应为对象的属性赋予“color”值,否则对象中的属性“color”应为未定义/空。我知道,在JavaScript中,这只需按如下方式完成: 功能测试(参数){ obj={prop_1:params.prop_1,prop_n:params.prop_n} } 但是,当我在Python中执行
功能测试(参数){
obj={prop_1:params.prop_1,prop_n:params.prop_n}
}
但是,当我在Python中执行此操作,并且参数不包含“prop_1”时,它将返回一个错误并停止。我知道我可以用“尝试”来解决这个问题:
不过,我希望有一种更简单/更简短的方法来实现这一点,Python中有10多个属性,您知道如何使用吗?使用字典作为
params
和
好的,如果
params
是dict
类型,您可以使用以下方法:
其中,如果
bar
键不存在,则None
是默认值。字典在python中是一种单独的数据类型。它们有一个更新方法,例如,如果您有一个默认颜色,并且如果该颜色存在于参数中,则希望更新该颜色:
def test(params):
obj = {'color': 'black'}
obj.update(params)
如果您的输入变量
params
是一个字典,并且您希望更新对象的属性,则可以通过迭代字典条目来实现:
class SomeClass():
pass
def test(params):
obj = SomeClass()
for key,val in params.iteritems():
setattr(obj, key, val)
Python代码中的
params
是什么?这是字典还是对象?这里混合了两种不同的数据结构:字典和对象。首先,您需要澄清您指的是哪一个。很抱歉,如果我的问题描述不清楚,我仍然能够解决它:)您使用params
的方式表明它是一个对象(使用.prop_1
访问属性)。如果是字典,您可以使用params[prop_1]
@ericornelissen访问相应条目。您可以自由投票并接受解决问题的任何答案
>>> params = {"foo": 12}
>>> params.get("bar", None)
None
def test(params):
obj = {'color': 'black'}
obj.update(params)
class SomeClass():
pass
def test(params):
obj = SomeClass()
for key,val in params.iteritems():
setattr(obj, key, val)