Python 반사 와 클래스 에 대한 특수 멤버 방법

반사
반사 즉 4 개의 내장 함 수 는 getattr,hasattr,setattr,delattr 로 나 뉜 다.  구성원 가 져 오기,구성원 검사,구성원 설정,구성원 삭제

class Dog(object):
  def __init__(self,name):
    self.name = name
  def eat(self):
    print("%s is eating..."%self.name)
def run():
  print("runing ....")
d = Dog("lucy")
choise=input("         :")
if hasattr(d,choise):#                 
  func=getattr(d,choise)#                          
  func()
else:
  setattr(d,choise,run)#setattr(obj,y,fun)   obj.y=fun,fun         
  v=getattr(d,choise)
  print(v)
dir([obj]):
이 방법 을 사용 하면 obj 대부분의 속성 명 을 포함 하 는 목록 을 되 돌려 줍 니 다.obj 의 기본 값 은 현재 모듈 대상 입 니 다.
hasattr(obj, attr):
이 방법 은 obj 에 attr 라 는 값 의 속성 이 있 는 지 확인 하고 불 값 을 되 돌려 줍 니 다.
getattr(obj, attr):
이 방법 을 호출 하면 obj 에서 attr 값 이라는 속성의 값 을 되 돌려 줍 니 다.예 를 들 어 attr 가'bar'라면 obj.bar 를 되 돌려 줍 니 다.
setattr(obj, attr, val):
이 방법 을 사용 하면 obj 의 attr 라 는 값 의 속성 값 을 val 로 할당 합 니 다.예 를 들 어 attr 가'bar'라면 obj.bar=val 에 해당 합 니 다.
 __doc__ 뾰족 한 설명 정보 보기
__module__현재 작업 대상 이 있 는 모듈 을 표시 합 니 다.
__class__현재 작업 의 대상 이 속 한 클래스 를 표시 합 니 다.
__init__구조 방법 은 클래스 생 성 대상 을 통 해 자동 으로 실 행 됩 니 다.
__del__분석 방법,현재 대상 이 메모리 에서 방출 되 어 자동 으로 요 괴 를 베 어 실행 합 니 다.
__call__대상 뒤에 괄호 추가 실행
__dict__클래스 나 대상 의 구성원 보기
__str__클래스 에서 이 방법 을 정의 하면 이 대상 을 인쇄 할 때 이 방법의 반환 값 을 출력 합 니 다.
__getitem__클래스 에서 사전 의 속성 구성원 을 정의 하면 가 져 올 수 있 습 니 다.
__setitem__수정 클래스 의 사전 데 이 터 를 설정 합 니 다.
__delitem__클래스 의 사전 데 이 터 를 삭제 합 니 다.
__metalass__이 종 류 는 누가 예화 하여 만 들 었 는 지 나타 내 는 데 쓰 인 다.
__new__촉발init__인 스 턴 스 생 성

from lib.ss import a
#    dog
class doges(object):
  """      """
  def __init__(self,name,food):
    self.name=name
    self.food=food
    self.data={}#        
  def __call__(self, *args, **kwargs):#          
    print(*args)
  def __str__(self):#       
    return self.name
  def __getitem__(self):#         
    return self.data
  def __setitem__(self, key, value):#         
    self.data[key]=value
  def __delitem__(self, key):#           
    del self.data[key]
dog=doges('xxx','iii')
print(dog.__doc__)
b=a()
print(b.__module__)#          
print(dog.__class__)#            
dog('111')#
print(doges.__dict__)#                          
print(dog.__dict__)#                           
print(dog)#   __str__    
print(dog.__str__())#     
dog['1']=1000#  .__setitem__()
dog['2']=1000#  .__setitem__()
print(dog.__getitem__())
print(dog.__delitem__('1'))#      
print(dog.__getitem__())
#        
def func(self):
  print('hello word%s'%self.name)
  print()
def __init__(self,name,age):
  self.name=name
  self.age=age
##type   1:   2.     3.    ,    
CAT=type('CAT',(object,),{'func':func,'__init__':__init__})
cat=CAT('  ',3)
cat.func()
print(cat.name,cat.age)

좋은 웹페이지 즐겨찾기