0
Exception
(및 파생물) 클래스가 다른 클래스와 마찬가지로 __dict__
특수 특성에 인스턴스 특성을 채우지 않는 이유는 무엇입니까?Exception 클래스가 __dict__ 특성을 채우지 않는 이유는 무엇입니까?
class TestClass(object):
def __init__(self, *args):
self.args = args
test = TestClass(1,2,3)
print(test.__dict__)
print(test.args)
>>>> {'args': (1, 2, 3)}
>>>> (1, 2, 3)
을 단, Exception
클래스는 다른 동작이 있습니다 :
예를 들어, object
클래스를 저장 인스턴스에서 파생 된 클래스는 __dict__
속성에 속성
test_exception = Exception(1,2,3)
print(test_exception.__dict__)
print(test_exception.args)
>>>> {}
>>>> (1, 2, 3)
내가 될 것으로 기대를 __dict__
특수 속성에있는 모든 객체의 속성을 볼 수 있으므로 이것으로 혼란 스럽습니다.
>>> type(Exception.args)
<type 'getset_descriptor'>
args
인스턴스 변수 아니며 적어도 파이썬 2.7
의미가 있습니다 만, 함수 인수는'args' 기술자를 통해 반환 될 때까지 내부적으로 저장됩니까? – eikonomega
CPython에서 적어도 예외를 구현하는 C 데이터 구조에 저장되며 Python을 통해 직접 액세스 할 수 없습니다. – chepner