파이썬 클래스 팩토리

Vaibhhav Khetarpal 2023년6월21일
  1. Python에서 클래스 팩터리를 만드는 방법
  2. class 키워드를 사용하여 Python에서 클래스 팩토리 생성
  3. type 키워드를 사용하여 Python에서 클래스 팩토리 생성
파이썬 클래스 팩토리

클래스를 생성하고 반환하는 것이 목적인 간단한 함수를 클래스 팩토리라고 합니다. 강력한 패턴 중 하나인 클래스 팩토리는 Python에서 광범위하게 활용됩니다.

이 자습서에서는 클래스 팩터리를 만드는 데 사용할 수 있는 다양한 방법을 보여줍니다.

Python에서 클래스 팩터리를 만드는 방법

클래스 팩터리를 설계하는 방법에는 두 가지가 있습니다. 하나는 코딩 시간 동안 클래스를 생성하고 다른 하나는 런타임 동안 클래스를 생성합니다.

전자는 class 키워드를 사용하고 후자는 type 키워드를 사용합니다. 이 두 가지 방법은 아래 기사에서 설명하고 대조합니다.

class 키워드를 사용하여 Python에서 클래스 팩토리 생성

class 키워드를 사용하여 클래스 팩토리를 생성할 수 있습니다. 이를 위해 함수를 만들고 함수 정의 내에 클래스를 보유해야 합니다.

다음 코드는 class 키워드를 사용하여 Python에서 클래스 팩터리를 만듭니다.

def ballfun():
    class Ball(object):
        def __init__(self, color):
            self.color = color

        def getColor(self):
            return self.color

    return Ball


Ball = ballfun()
ballObj = Ball("green")
print(ballObj.getColor())

위의 코드는 다음 출력을 제공합니다.

green

type 키워드를 사용하여 Python에서 클래스 팩토리 생성

type 키워드를 사용하면 클래스를 동적으로 생성할 수 있습니다. Python에서 클래스 팩터리를 만들려면 type 키워드를 사용해야 합니다.

그러나 type 키워드를 사용하면 함수가 클래스와 함께 네임스페이스에만 남게 됩니다.

다음 코드는 type 키워드를 사용하여 Python에서 동적 클래스를 만듭니다.

def init(self, color):
    self.color = color


def getColor(self):
    return self.color


Ball = type(
    "Ball",
    (object,),
    {
        "__init__": init,
        "getColor": getColor,
    },
)
ballGreen = Ball(color="green")
print(ballGreen.getColor())

위의 코드는 다음 출력을 제공합니다.

green

type 키워드는 동적 클래스를 허용하고 런타임에 효과적인 생성 및 단점을 허용합니다. 위의 코드에서 볼 수 있듯이 initgetColor 함수는 모두 네임스페이스에 복잡합니다.

또한 type 키워드를 사용하여 동적 클래스를 만들면 이러한 함수의 재사용 가능성도 사라집니다.

이에 대한 쉬운 해결책은 클래스 팩토리를 도입하는 것입니다. 코드의 혼란을 줄이고 기능의 재사용성을 촉진하므로 두 가지 방법 모두에 도움이 됩니다.

다음 코드는 type 키워드를 사용하여 Python에서 클래스 팩터리를 만듭니다.

def create_ball_class():
    def init(self, color):
        self.color = color

    def getColor(self):
        return self.color

    return type(
        "Ball",
        (object,),
        {
            "__init__": init,
            "getColor": getColor,
        },
    )


Ball = create_ball_class()
ballObj = Ball("green")
print(ballObj.getColor())

위의 코드는 다음 출력을 제공합니다.

green

클래스 팩토리를 만드는 방법을 살펴보았으니 이제 새로 배운 클래스 팩토리 개념을 언제 사용하고 언제 사용하지 않는지 구분하는 것도 중요합니다.

일반적으로 클래스 팩토리는 코딩이 발생할 때 어떤 속성이 할당되어야 하는지 모를 때 유용합니다.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

관련 문장 - Python Class