소결Python의 반사 메커니즘

2212 단어 python반사
선언:
며칠 전에 Python으로 ftp 서버를 구현했습니다.작은 항목에서 반사가 사용되었다.그래서 필기를 해서 공고히 하세요.
반사의 정의: 그 자체의 상태나 행동을 감지하고 수정하는 능력(자성).
반사를 통해 Python은 문자열을 통해 프로그램이 실행되는 상태와 방법을 매핑하거나 수정할 수 있습니다.
반사의 네 가지 방법.hasattr,getattr,setattr,delattr
hasattr: 이 종류의 존재 여부를 판단하는 방법

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s "%self.name)

p = Person("laowang")    
print(hasattr(p,"talk"))  # True。 talk 
print(hasattr(p,"name"))  # True。 name 
print(hasattr(p,"abc"))   # False。 abc 
getattr: 문자열에 따라obj 대상에 대응하는 방법의 메모리 주소를 가져오고 "()"괄호를 누르면 실행합니다

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s "%self.name)
p = Person("laowang")

n = getattr(p,"name")  #  name 
print(n)        #  :laowang

f = getattr(p,"talk")  #  talk 
f()           #  talk 

 getattr , ?
s = getattr(p,"abc","not find")
print(s)        #  :not find。 abc p , , not find
setattr: setattr를 통해 외부의 함수를 실례에 연결합니다

def abc(self):
  print("%s "%self.name)

class Person(object):
  def __init__(self,name):
    self.name = name

p = Person("laowang")
setattr(p,"talk",abc)  #  abc p , talk
p.talk(p)        #  talk , , 


setattr(p,"age",30)   #  age, 30
print(p.age)      #  :30
delattr: 실례나 클래스를 삭제하는 방법

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s "%self.name)

p = Person("laowang")

delattr(p,"name")    #  name 
print(p.name)      #  
왜 반사로
이점 1:
플러그 가능 메커니즘 구현
사전에 인터페이스를 정의할 수 있다. 인터페이스는 완성된 후에야 진정으로 실행될 수 있다. 이것은 삽입과 사용을 실현했다. 이것은 사실'후기 귀속'이다.
이점 2:
동적 가져오기 모듈(현재 모듈 구성원 반사 기반)
이상은 소결Python의 반사 메커니즘에 대한 상세한 내용입니다. 더 많은 python 반사에 관한 자료는 저희 다른 관련 글에 주목하세요!

좋은 웹페이지 즐겨찾기