English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 기본 튜토리얼

Python 흐름 제어

Python 함수

Python 데이터 타입

Python 파일 작업

Python 객체와 클래스

Python 날짜와 시간

Python 고급 지식

Python 참조 매뉴얼

Python 다중 모드

이 튜토리얼에서는 다중 형성, 다양한 타입의 다중 형성, 그리고 예제를 통해 Python에서 이를 구현하는 방법을 배웁니다.

다중 형성이 무엇인가요?

다중 형성의 본래 의미는 다른 형태로 나타나는 조건을 말합니다.

다중 형성은 프로그래밍에서 매우 중요한 개념입니다. 이는 단일 타입 엔티티(메서드, 연산자, 객체)를 사용하여 다양한 상황에서 다른 타입을 나타내는 것을 의미합니다.

예를 들어

예제1:다중 형성 추가 연산자

우리는 알고 있습니다 + 연산자는 Python 프로그램에서 널리 사용되지만, 단일 사용법이 없습니다.

정수 데이터 타입에 대해서는 + 연산자로 수학적 더하기 연산을 수행합니다.

num1 = 1
num2 = 2
print(num1+num2)

따라서, 이 프로그램의 출력은 3

동일하게, 문자열 데이터 타입에 대해서는 + 연산자로 연결됩니다.

str1 = "Python"
str2 = "Programming"
print(str1+" "+str2)

결과적으로, 이 프로그램의 출력은 : Python 프로그래밍

여기서는 연산자 + 다양한 데이터 타입에 대해 다른 작업을 수행합니다. 이는 Python에서 가장 간단한 다중 형성 현상 중 하나입니다.

Python의 함수 다중 형성

Python에는 다양한 데이터 타입과 호환되는 몇 가지 함수가 있습니다.

이러한 함수 중 하나는 len() 함수입니다. 이 함수는 Python에서 다양한 데이터 타입과 함께 실행될 수 있습니다. 이 함수의 몇 가지 예제를 보겠습니다.

예제2:다중 형성 len() 함수

print(len("w3codebox"))
print(len(["Python", "Java", "C"]))
print(len({"Name": "John", "Address": "Nepal"}))

출력 결과

5
3
2

여기서, 많은 데이터 타입(예: 문자열, 리스트, 튜플, 집합 및 딕셔너리 등)이 len() 함수를 사용할 수 있음을 볼 수 있습니다. 그러나 특정 데이터 타입에 대한 특정 정보를 반환할 수 있습니다.

Python中len()函数中的多态性

Python中的类多态

객체 지향 프로그래밍에서 다형성은 매우 중요한 개념입니다.

Python의 OOP에 대해 더 알고 싶다면 다음을 방문하세요:Python面向对象编程

클래스 메서드를 생성할 때, 다형성 개념을 사용할 수 있습니다. 왜냐하면 Python은 다른 클래스가同名의 메서드를 가질 수 있기 때문입니다.

그런 다음, 호출 중인 객체를 무시하고 이러한 메서드를 일반화할 수 있습니다. 예를 들어 보겠습니다:

예제3:클래스 메서드의 다형성

class Cat:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def info(self):
        print(f"저는 고양이입니다. 제 이름은 {self.name}입니다. 저는 {self.age}세입니다.")
    def make_sound(self):
        print("Meow")
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def info(self):
        print(f"저는 개입니다. 제 이름은 {self.name}입니다. 저는 {self.age}세입니다.")
    def make_sound(self):
        print("Bark")
cat1 = Cat("Kitty", 2.5)
dog1 = Dog("Fluffy", 4)
for animal in (cat1, dog1):
    animal.make_sound()
    animal.info()
    animal.make_sound()

출력 결과

Meow
저는 고양이입니다. 제 이름은 Kitty입니다. 저는 2.5 세.
Meow
Bark
저는 개입니다. 제 이름은 Fluffy입니다. 저는  4 세.
Bark

여기서, 우리는 두 개의 클래스 Cat과 Dog를 생성했습니다. 그들은 유사한 구조를 가지고 있으며, info()와 make_sound()와 같은同名 메서드를 가지고 있습니다.

하지만, 주의하세요. 우리는 공통의 부모 클래스를 만들거나 이러한 클래스를 어떤 방식으로든 연결한 것은 아닙니다. 그럼에도 불구하고, 두 개의 다른 객체를 튜플에 넣어 공통의 animal 변수를 사용하여 이터레이션할 수 있습니다. 다형성 덕분에 이는 허용됩니다.

다형성과 상속

다른 프로그래밍 언어와 마찬가지로, Python의 서브 클래스는 부모 클래스에서 메서드와 속성을 상속받습니다. 특정 서브 클래스에 대해 메서드와 속성을 다시 정의할 수 있으며, 이를Method Overriding(메서드 재정의)。

다형성은 부모 클래스와同名의 이러한 오버라이딩 메서드와 속성에 접근할 수 있게 합니다。

예를 들어 보겠습니다:

예제4:메서드 재정의

from math import pi
class Shape:
    def __init__(self, name):
        self.name = name
    def area(self):
        pass
    def fact(self):
        return "저는 두차원의 형상입니다."
    def __str__(self):
        return self.name
class Square(Shape):
    def __init__(self, length):
        super().__init__("Square")
        self.length = length
    def area(self):
        return self.length**2
    def fact(self):
        return "사각형의 각각은"90도."
class Circle(Shape):
    def __init__(self, radius):
        super().__init__("Circle")
        self.radius = radius
    def area(self):
        return pi*self.radius**2
a = Square(4)
b = Circle(7)
print(b)
print(b.fact())
print(a.fact())
print(b.area())

출력 결과

Circle
저는 두차원의 형상입니다.
사각형의 각각은90도.
153.93804002589985

여기서, 부모 클래스에서 사용된 __str__()와 같은 자식 클래스에서 재정의되지 않은 메서드를 볼 수 있습니다.

다중 상태성 때문에 파이썬 해석기는 객체 a(Square 클래스)의 fact() 메서드가 재정의되었다고 자동으로 인식합니다. 그것은 자식 클래스에서 정의된 것을 사용합니다.

그리고, 객체 b의 fact() 메서드가 재정의되지 않았기 때문에 Parent Shape 클래스에서 사용할 수 있습니다.

파이썬의 부모 클래스와 자식 클래스의 다중 상태

주의메서드 오버로드이는 파이썬에서 동일한 이름을 가진 다른 매개변수를 가진 메서드를 생성할 수 없는 방법입니다.