Python 은dict__dir()와 의 사고
파 이 썬 기반dict__dir()와 의 차이 에 대한 상세 한 설명
내 가 그때 겪 었 던 문 제 를 말 해 봐.
class Demo:
def __init__(self, name, age):
self.name = name
self.age = age
def func(self):
print('Hello {0}'.format(self.name))
>>> d1 = Demo('Pythoner', 24)
>>> hasattr(d1, 'func')
True
>>> d1.__dict__
{'age': 24, 'name': 'Pythoner'}
>>dir(d1)
[ 'age', 'func', 'name','__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
우선,우 리 는 인 스 턴 스 방법 도 속성 이 라 고 할 수 있다 는 것 을 알 고 있 습 니 다.hasattr()함 수 를 통 해 검증 할 수 있 습 니 다.그리고dict__대상 속성 을 저장 하 는 사전 이지 만 되 돌아 오 는 값 에는'func'가 없습니다!dir()함 수 를 보면 대상 의 모든 속성(부모 클래스 에서 계승 하 는 속성 포함)을 자동 으로 찾 습 니 다.반환 값 에는'func'가 있 습 니 다.
그래서 저 는'인 스 턴 스 방법'은 인 스 턴 스 의'개인'속성 이 아니 라 이 유형의 모든 인 스 턴 스 가 공유 하 는 속성 이 라 고 추측 합 니 다!
인 스 턴 스 가 사유 속성 을 얻 으 려 면'사유 화'과정 이 필요 합 니 다.마치init__함수 초기 화!
인증:
class Demo2:
def __init__(self, name):
self.name = name
def func(self):
print('----get arg country----')
self.country = 'China'
>>> d2 = Demo2('Pythoner')
>>> d2.__dict__
{'name': 'Pythoner'}
>>> d2.func()
----get arg country----
>>> d2.__dict__
{'country': 'China', 'name': 'Pythoner'}
'인 스 턴 스 방법'이 인 스 턴 스 방법 이 라 고 불 리 는 이 유 는 모든 인 스 턴 스 실행 방법 이 각자 의 개인 속성 에 따라 서로 다른 결 과 를 얻 을 수 있 기 때 문 입 니 다.방법 중의 self 매개 변수 때 문 입 니 다.인 스 턴 스 는 인 스 턴 스 방법 을 실행 할 때 소속 클래스 에서 이 방법 을 찾 은 다음 에 self 매개 변 수 를 통 해 인 스 턴 스 자 체 를 전달 하고 인 스 턴 스 의 개인 속성 을 함께 전달 합 니 다.self 매개 변 수 를 통 해 인 스 턴 스 와 방법의 연결 을 실현 합 니 다.
총결산
이상 은 바로 본 논문 에서 Python 유 에 관 한 것 입 니 다.dict__dir()가 일 으 킨 사고의 모든 내용 과 여러분 에 게 도움 이 되 기 를 바 랍 니 다.관심 이 있 는 친 구 는 본 사 이 트 를 계속 참조 할 수 있 습 니 다.Python 변 수 를 사용 할 때 피해 야 할 세 가지 오류,Python 의*중복 연산 자 를 깊이 이해 합 니 다.등 부족 한 점 이 있 으 면 댓 글 에 지적 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.