파 이 썬 기반dict__dir()와 의 차이 에 대한 상세 한 설명
__dict__dir()와 의 차이 점:
dir()는 함수 입 니 다.list 를 되 돌려 줍 니 다.
__dict__하나의 사전 입 니 다.키 는 속성 명 이 고 값 은 속성 값 입 니 다.
dir()는 대상 의 모든 속성 을 찾 는 데 사 용 됩 니 다. 를 포함 합 니 다.dict__중의 속성,dict__dir()의 부분 집합 입 니 다.
모든 대상 이 를 가지 고 있 는 것 은 아니다.dict__속성많은 내장 유형 은 가 없다dict__속성,예 를 들 어 list 는 대상 의 모든 속성 을 dir()로 표시 해 야 합 니 다.
__dict__속성
__dict__대상 속성 을 저장 하 는 사전 입 니 다.키 는 속성 명 이 고 값 은 속성 값 입 니 다.
#!/usr/bin/python
# -*- coding: utf-8 -*-
class A(object):
class_var = 1
def __init__(self):
self.name = 'xy'
self.age = 2
@property
def num(self):
return self.age + 10
def fun(self):pass
def static_f():pass
def class_f(cls):pass
if __name__ == '__main__':#
a = A()
print a.__dict__ #{'age': 2, 'name': 'xy'} __dict__
print A.__dict__
'''
A __dict__
{
'__dict__': <attribute '__dict__' of 'A' objects>, # 5
'__module__': '__main__', #
'num': <property object>, #
'class_f': <function class_f>, #
'static_f': <function static_f>, #
'class_var': 1, 'fun': <function fun >, #
'__weakref__': <attribute '__weakref__' of 'A' objects>,
'__doc__': None, #class
'__init__': <function __init__ at 0x0000000003451AC8>}
'''
a.level1 = 3
a.fun = lambda :x
print a.__dict__ #{'level1': 3, 'age': 2, 'name': 'xy','fun': <function <lambda> at 0x>}
print A.__dict__ #
A.level2 = 4
print a.__dict__ #{'level1': 3, 'age': 2, 'name': 'xy'}
print A.__dict__ # level2
print object.__dict__
'''
{'__setattr__': <slot wrapper '__setattr__' of 'object' objects>,
'__reduce_ex__': <method '__reduce_ex__' of 'object' objects>,
'__new__': <built-in method __new__ of type object at>,
.....
'''
상기 코드 에서 알 수 있 듯 이,실례 적dict__이 인 스 턴 스 와 관련 된 인 스 턴 스 속성 만 저장 합 니 다.
바로 실례 의dict__속성,모든 인 스 턴 스 의 인 스 턴 스 속성 이 서로 영향 을 주지 않 습 니 다.
클래스dict__모든 인 스 턴 스 가 공유 하 는 변수 와 함수(클래스 속성,방법 등),클래스 의 를 저장 합 니 다.dict__부모 클래스 의 속성 을 포함 하지 않 습 니 다.
dir()함수
dir()는 Python 이 제공 하 는 API 함수 입 니 다.dir()함 수 는 대상 의 모든 속성(부모 클래스 에서 계승 하 는 속성 포함)을 자동 으로 찾 습 니 다.
하나의 실례 적 인dict__속성 은 그 실례 의 실례 속성의 집합 일 뿐 이 실례 의 모든 유효한 속성 을 포함 하지 않 습 니 다.따라서 대상 의 모든 유효한 속성 을 가 져 오 려 면 dir()를 사용 해 야 합 니 다.
print dir(A)
'''
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'class_f', 'class_var', 'fun', 'level1', 'level2', 'name', 'num', 'static_f']
'''
a_dict = a.__dict__.keys()
A_dict = A.__dict__.keys()
object_dict = object.__dict__.keys()
print a_dict
print A_dict
print object_dict
'''
['fun', 'level1', 'age', 'name']
['__module__', 'level2', 'num', 'static_f', '__dict__', '__weakref__', '__init__', 'class_f', 'class_var', 'fun', '__doc__']
['__setattr__', '__reduce_ex__', '__new__', '__reduce__', '__str__', '__format__', '__getattribute__', '__class__', '__delattr__', '__subclasshook__', '__repr__', '__hash__', '__sizeof__', '__doc__', '__init__']
'''
# __doc__ , ,
print set(dir(a)) == set(a_dict + A_dict + object_dict) #True
결론.dir()함 수 는 를 포함 하여 한 대상 의 모든 속성 을 자동 으로 찾 습 니 다.dict__속성
__dict__dir()의 부분 집합 입 니 다.dir()는 를 포함 합 니 다.dict__속성
이상 이 편 은 Python 에 기초 하고 있 습 니 다.dict__dir()와 의 차이 점 에 대한 상세 한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.