如果對象存在,我想獲取對象的屬性,否則將其設置爲None
或空字符串或某些默認值。有沒有一種簡單的方法來做到這一點?如果存在對象的屬性,最乾淨/最快捷的方式是什麼?
例如在僞代碼:
gender = if Person then Person.gender else ''
如果對象存在,我想獲取對象的屬性,否則將其設置爲None
或空字符串或某些默認值。有沒有一種簡單的方法來做到這一點?如果存在對象的屬性,最乾淨/最快捷的方式是什麼?
例如在僞代碼:
gender = if Person then Person.gender else ''
可以使用default
參數getattr()
:
gender = getattr(Person, "gender", "")
這將設置gender
到Person.gender
如果Person
對象具有這樣的屬性,以及""
除此以外。
您測試* attritbute *('gender')是否存在,但問題是關於丟失的* object *('Person')。 – WolframH 2012-02-28 22:28:58
@WolframH:如果定義名字'Person',它指向某個對象,並且該對象顯然存在。如果這個名字沒有定義,我的代碼將不起作用,你也不會。我不確定你在說什麼。 – 2012-02-28 22:41:16
例如,如果'Person'是錯誤類型的對象,則會顯示差異。另一個(可能很遠)的例子是一個空的Person(布爾上下文中的「False」)。 – WolframH 2012-02-28 22:53:14
假設Person
具有False
值,如果不存在的話:
gender = Person.gender if Person else ''
有趣的是,你的僞代碼是有效的CoffeeScript和可可。 :) – AKX 2012-02-28 22:18:44
不相關,但大寫的標識符看起來像類名稱,而不是實例。 – 2013-10-07 15:51:43