call이 Python에서 수열을 개선하는 실례 설명

우리는 모두 함수 호출을 한 적이 있다. 그러면call 호출 클래스의 실례 과정은 함수와 매우 비슷하다.류의 용법은 많은 사람들이 알고 있는데, 류의 실례는 또 무엇입니까?클래스를 하나의 설계도로 볼 수 있는데 클래스 실례는 바로 설계된 완제품이다.이제 콜 호출 대상의 개념을 이해하면python에서 수조를 개선하는 데 사용할 수 있습니다. 배우고 싶은 파트너와 함께 아래를 보십시오.
__call__()
Python에서 함수식first-class 대상은 함수가 다른 함수나 방법에 전달될 수 있고 하위 프로그램에서 되돌아올 수 있으며 변수에 부여될 수 있음을 나타낸다.
클래스의 실례도 함수처럼 취급될 수 있다. 예를 들어 그들을 다른 함수나 방법에 전달하고 호출될 수 있다.이 목적을 달성하려면 클래스에서 __call__() 메서드
def __call__(self, [args ...]) 그것은 일련의 매개 변수를 받아들인다.x가 클래스 X의 인스턴스라고 가정하면 x.__call__(1,2)는 x(1,2)를 호출하는 것과 같고 실례x는 마치 함수와 같다.
피보나치 수열 개선:

class Fib(object):
__ 추가call__간단한 호출 방법:

>>> f = Fib()
>>> print(f(10))
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
실례 대상을 유사한 함수 형식으로 표시하여 함수와 대상 간의 개념을 더욱 모호하게 할 수 있다.

class Fib(object):
 def __init__(self):
  pass
 def __call__(self,num):
  a,b = 0,1;
  self.l=[]
  for i in range (num):
   self.l.append(a)
   a,b= b,a+b
  return self.l
 def __str__(self):
  return str(self.l)
 __rept__=__str__ 
f = Fib()
print(f(10))
__call__() 지식 포인트 확장
Python에서 함수는 다음과 같은 객체입니다.

>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)
f는 호출될 수 있기 때문에 f는 호출 가능한 대상이라고 불린다.
모든 함수는 호출 대상입니다.
하나의 클래스 실례도 호출 가능한 대상이 될 수 있으며, 특수한 방법만 실현하면 __call__().
우리는 Person 클래스를 호출 가능한 대상으로 만들었다.

class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
 
def __call__(self, friend):
print 'My name is %s...' % self.name
print 'My friend is %s...' % friend
이제 Person 인스턴스를 직접 호출할 수 있습니다.

>>> p = Person('Bob', 'male')
>>> p('Tim')
My name is Bob...
My friend is Tim...
p('Tim')만 보면 p가 하나의 함수인지 클래스의 실례인지 확인할 수 없기 때문에Python에서 함수도 대상이고 대상과 함수의 차이는 현저하지 않다.
차지식점에 대한 사고와 확장에 대해 저희는 후속적으로 정리하고 보충할 것입니다. 저희에 대한 지지에 감사드립니다.

좋은 웹페이지 즐겨찾기