2011-02-01 6 views

답변

14

네, 사용자 정의 클래스 실패 할 수 있습니다

>>> class C(object): 
...  def __str__(self): 
...   return 'oops: ' + oops 
... 
>>> c = C() 
>>> str(c) 
NameError: global name 'oops' is not defined 

그것은 심지어 내장의 일부 실패 할 수 있습니다 예 : unicode :

>>> u = u'\xff' 
>>> s = str(u) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xff' in position 0: 
ordinal not in range(128) 
3

전화하는 대상에 따라 다릅니다 str(). 각 객체는 __str__() 함수에서 자체 구현을 정의 할 수 있으며 이로 인해 쉽게 예외가 발생할 수 있습니다.

예 :

class A: 
    def __str__(self): 
    raise Exception 

str(A()) 
8

예, 물론 :

class A(object): 
    def __str__(self): 
     raise Exception 
a = A() 
str(a) 
+0

하지만 이런 일이 발생하면 다른 사람이 더 많은 코드 검토가 필요합니다. –

+0

+1 : 인위적인 예가 아니라 실제로 일어나는 일입니다. 예외를 발생시키는 코드를 작성할 수 있습니다. 좋은. –

+2

아니야. 내 말은 .. –

관련 문제