Python 반사 사용법 실례 분석

2179 단어
본문의 실례는 파이톤이 반사하는 용법을 설명하였다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
프로그램 개발을 하는 과정에서 우리는 자주 이러한 수요를 만날 수 있다. 실행 대상 중의 어떤 방법이 필요하거나 호출 대상 중의 어떤 변수가 필요하다. 그러나 여러 가지 이유로 우리는 이 방법이나 변수가 존재하는지 확정할 수 없다. 이것은 우리가 특수한 방법이나 메커니즘으로 이 미지의 방법이나 변수를 방문하고 조작해야 하는 것이다. 이 메커니즘을 반사라고 부른다.다음 기록에서 반사하는 몇 가지 중요한 방법:
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
대상의 방법이나 변수의 메모리 주소를 가져오는 방법

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
객체에 변수 또는 메서드 추가

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)   #  


파이썬 관련 내용에 관심이 있는 더 많은 독자들은 본 사이트의 주제를 보실 수 있습니다.,,,,,,,,,,,,
본고에서 서술한 것이 여러분의 파이톤 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기