2012-02-28 19 views
0

如果對象存在,我想獲取對象的屬性,否則將其設置爲None或空字符串或某些默認值。有沒有一種簡單的方法來做到這一點?如果存在對象的屬性,最乾淨/最快捷的方式是什麼?

例如在僞代碼:

gender = if Person then Person.gender else '' 
+0

有趣的是,你的僞代碼是有效的CoffeeScript和可可。 :) – AKX 2012-02-28 22:18:44

+0

不相關,但大寫的標識符看起來像類名稱,而不是實例。 – 2013-10-07 15:51:43

回答

8

可以使用default參數getattr()

gender = getattr(Person, "gender", "") 

這將設置genderPerson.gender如果Person對象具有這樣的屬性,以及""除此以外。

+0

您測試* attritbute *('gender')是否存在,但問題是關於丟失的* object *('Person')。 – WolframH 2012-02-28 22:28:58

+0

@WolframH:如果定義名字'Person',它指向某個對象,並且該對象顯然存在。如果這個名字沒有定義,我的代碼將不起作用,你也不會。我不確定你在說什麼。 – 2012-02-28 22:41:16

+0

例如,如果'Person'是錯誤類型的對象,則會顯示差異。另一個(可能很遠)的例子是一個空的Person(布爾上下文中的「False」)。 – WolframH 2012-02-28 22:53:14

2

假設Person具有False值,如果不存在的話:

gender = Person.gender if Person else '' 
相關問題