mls*_*ves 1 python google-app-engine
我想确定一个类中属性的类型.我setattr
用来设置值,我想检查预期的类型,以便我可以在调用之前正确转换字符串值setattr
.
你是如何在python中做到这一点的?
编辑1-目前为止基于答案的一些其他信息:
我只知道我想要类型的属性的名称,这里是一些代码:
def populate_object_properties(values_as_strings,
object_to_populate,
properties_to_populate):
for k in properties_to_populate:
value = values_as_strings.get(k)
if value:
setattr(object_to_populate, k, value)
else:
setattr(object_to_populate, k, None)
Run Code Online (Sandbox Code Playgroud)
我想value
在打电话之前测试一下这是正确的类型setattr
.
编辑2-我需要验证类型的原因是,我使用的是Google AppEngine的db.Model作为基类型object_to_populate
,并且在将字符串放入int
类型时不喜欢.我试图让问题尽可能简单,但也许这条信息会对某人的回答产生影响.(?)
在AppEngine中,每个模型都有一个properties()
类方法,它返回您在模型中声明的属性的字典.您可以使用它来检查模型对每个属性所期望的类型:
def populate_object_properties(values_as_strings,
object_to_populate,
properties_to_populate):
model_properties = object_to_populate.properties()
for k in properties_to_populate:
value = values_as_strings.get(k)
model_property = model_properties.get(k)
if value:
if isinstance(model_property, StringProperty):
setattr(object_to_populate, k, str(value))
elif isinstance(model_property, IntegerProperty):
setattr(object_to_populate, k, int(value))
else:
setattr(object_to_populate, k, None)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7869 次 |
最近记录: |