访问expando模型属性

时间:2013-06-20 06:05:52

标签: python google-app-engine

我有一个薪水模型,可以处理多家公司员工的工资,或者说我会说同一家公司的多个工作地点。因此,当我添加薪资组件时,我选择模型为Expando,因为每个公司可能根据其薪资结构具有国家特定组件。运行工资核算时会计算这些工资组成部分。 问题是,我可能需要在某处显示它,可能在员工档案中。我该怎么做?例如,

  

公司ABC印度公司将有

     
    

基本:6600

         DA:1250

  
     

公司ABC UK的B

     
    

HRA:1500

         

特殊津贴:3000

  

由于这些道具是根据各自公司生成运行时的,因此如何访问它们?我不能为英国的一名员工写薪水。我希望你理解我的问题。

1 个答案:

答案 0 :(得分:-1)

正如Tim建议的那样,您可以通过执行以下操作来测试属性是否存在:

basic_salary = getattr(salary, 'basic', False)

这样,如果basic具有此属性,则basic_salary将为salary的值,否则为False

或者,您可以通过以下方式获取实例所具有的属性列表:

attributes = salary._properties.keys()

虽然您正在访问本课程的私有部分,但您仍然可以访问它(请注意可能会破坏此类访问的类更改)。使用此列表,您可以通过以下方式测试basic是否在salary

has_basic = 'basic' in attributes