Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 다형성

<시간/>

다형성은 여러 형태를 의미합니다. 파이썬에서 우리는 여러 형태를 취하는 동일한 연산자나 함수를 찾을 수 있습니다. 동일한 이름의 클래스 메소드를 갖는 다른 클래스를 생성할 때도 유용합니다. 이는 많은 코드를 다시 사용하고 코드 복잡성을 줄이는 데 도움이 됩니다. 다형성은 아래의 몇 가지 예에서 볼 수 있듯이 상속과도 연결됩니다.

연산자의 다형성

+ 연산자는 두 개의 입력을 받아 입력이 무엇인지에 따라 결과를 제공할 수 있습니다. 아래 예에서 우리는 정수 입력이 정수를 산출하는 방법과 입력 중 하나가 float이면 결과가 float가 되는 방법을 볼 수 있습니다. 또한 문자열의 경우 단순히 연결됩니다. 이것은 파이썬에서 + 연산자가 생성되는 방식 때문에 자동으로 발생합니다.

a = 23
b = 11
c = 9.5
s1 = "Hello"
s2 = "There!"
print(a + b)
print(type(a + b))
print(b + c)
print(type (b + c))
print(s1 + s2)
print(type(s1 + s2))

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

출력

34
20.5
HelloThere!

내장 함수의 다형성

우리는 또한 다른 파이썬 함수가 다른 유형의 입력을 받아 다르게 처리할 수 있다는 것을 알 수 있습니다. len()에 문자열 값을 제공하면 그 안의 모든 문자를 셉니다. 그러나 5개의 튜플이나 사전을 입력으로 사용하면 다르게 처리합니다.

str = 'Hi There !'
tup = ('Mon','Tue','wed','Thu','Fri')
lst = ['Jan','Feb','Mar','Apr']
dict = {'1D':'Line','2D':'Triangle','3D':'Sphere'}
print(len(str))
print(len(tup))
print(len(lst))
print(len(dict))

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

출력

10
5
4
3

사용자 정의 메소드의 다형성

이름은 같지만 다른 클래스 이름으로 래핑된 메서드를 만들 수 있습니다. 그래서 우리는 다른 결과를 얻기 위해 접두사를 붙인 다른 클래스 이름으로 같은 메서드를 계속 호출할 수 있습니다. 아래 예에는 동일한 방법을 사용하여 둘레와 면적을 얻기 위한 두 개의 클래스(직사각형과 원)가 있습니다.

from math import pi

class Rectangle:
   def __init__(self, length, breadth):
      self.l = length
      self.b = breadth
   def perimeter(self):
      return 2*(self.l + self.b)
   def area(self):
      return self.l * self.b

class Circle:
   def __init__(self, radius):
      self.r = radius
   def perimeter(self):
      return 2 * pi * self.r
   def area(self):
      return pi * self.r ** 2

# Initialize the classes
rec = Rectangle(5,3)
cr = Circle(4)
print("Perimter of rectangel: ",rec.perimeter())
print("Area of rectangel: ",rec.area())

print("Perimter of Circle: ",cr.perimeter())
print("Area of Circle: ",cr.area())

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

출력

Perimter of rectangel: 16
Area of rectangel: 15
Perimter of Circle: 25.132741228718345
Area of Circle: 50.26548245743669