2013-06-20 214 views
0

我有一個工資模型,將處理多個公司的員工薪水,或者說我會說同一家公司的多個工作地點。因此,當我添加工資組件時,我選擇的模型爲Expando,因爲每個公司可能根據其薪酬結構具有國家特定組件。這些工資部分是在工資單運行時計算的。 問題是,我可能需要在某處顯示它,可能在員工檔案中。我該怎麼做?例如,在公司ABC印度訪問expando模型屬性

A將有

基礎:6600

DA:在公司1250

乙ABC英國將有

HRA:1500

特殊津貼:3000

由於這些道具都是根據各自公司生成的運行時,我該如何訪問它們?我無法爲英國的員工編寫salary.basic。我希望你能理解我的問題。

+0

你指的是谷歌應用程序引擎的Expando的班? –

+0

是的。我忘了提到這一點。 –

+0

您可以隨時使用getattr訪問屬性。即'getattr(薪水,'基本')' –

回答

-1

蒂姆建議,可如果這樣做存在屬性測試:

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

這樣,basic_salary將是basic的價值,如果salary有這個屬性,否則False

或者,你可以得到性能的實例已被列表:

attributes = salary._properties.keys() 

雖然你正在訪問什麼的意思是類的私有部分,您仍然可以訪問它(一定要信守關注可能會破壞這種訪問的類的變化)。有了這個列表,您可以測試是否basicsalary由:

has_basic = 'basic' in attributes