2012-02-28 3 views
0

개체가있는 경우 개체에 속성을 가져오고 그렇지 않으면 None 또는 빈 문자열 또는 일부 기본값으로 설정합니다. 이 작업을 수행하는 데 한 가지 빠른 방법이 있습니까?오브젝트의 속성을 얻는 가장 깨끗하고/가장 빠른 방법은 무엇입니까?

의사의 예를 들면 다음과 같습니다

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

이것은 Person 개체가 이러한 속성이있는 경우 Person.gendergender을 설정하고 ""을에한다 :

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

를 충분히 재미있게, 당신의 의사가 유효 커피 스크립트와 코코입니다. :) – AKX

+0

관련이 없지만 대문자로 된 식별자는 인스턴스가 아닌 클래스 이름처럼 보입니다. –

답변

8

당신은 default 매개 변수 getattr()로 사용할 수 있습니다 그렇지 않으면.

+0

* attritbute * ('gender')가 존재하는지 테스트하지만 문제는 빠진 * object * ('Person')에 관한 것입니다. – WolframH

+0

@WolframH :'Person'이라는 이름이 정의되면, 그것은 어떤 객체를 가리키며, 그 객체가 분명히 존재합니다. 그 이름이 정의되어 있지 않으면 내 코드가 작동하지 않을 것이며, 당신 코드도 작동하지 않을 것입니다. 나는 네가 무슨 말을하는지 잘 모르겠다. –

+0

차이점은, 예를 들어'Person'이 잘못된 유형의 객체 인 경우입니다. 또 다른 (아마도 멀리 가져온) 예제는 빈 Person (부울 컨텍스트에서'False')이 될 것입니다. – WolframH

2

가 존재하지 않는 경우 PersonFalse 값을 가지고 있다고 가정 :

gender = Person.gender if Person else '' 
관련 문제