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에서 함수도 대상이고 대상과 함수의 차이는 현저하지 않다.차지식점에 대한 사고와 확장에 대해 저희는 후속적으로 정리하고 보충할 것입니다. 저희에 대한 지지에 감사드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JScall () 및 apply () 방법에 대한 인스턴스 요약 사용최근에 JacvaScript에서의call()방법과apply()방법을 만났습니다. 그리고 어떤 때는 이 두 방법이 정말 중요합니다. 그러면 이 두 방법의 사용과 차이를 정리하겠습니다. 모든 함수는 두 가지 비계승적인 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.