Python-Klassenfabrik

Vaibhhav Khetarpal 21 Juni 2023
  1. So erstellen Sie eine Klassenfabrik in Python
  2. Verwenden Sie das Schlüsselwort class, um eine Klassenfabrik in Python zu erstellen
  3. Verwenden Sie das Schlüsselwort type, um eine Klassenfabrik in Python zu erstellen
Python-Klassenfabrik

Eine einfache Funktion, deren Zweck darin besteht, eine Klasse zu erstellen und zurückzugeben, wird als Klassenfabrik bezeichnet. Eine Klassenfabrik, die eines der mächtigen Muster ist, wird in Python ausgiebig genutzt.

In diesem Lernprogramm werden die verschiedenen Möglichkeiten zum Erstellen einer Klassenfactory veranschaulicht.

So erstellen Sie eine Klassenfabrik in Python

Es gibt zwei Methoden zum Entwerfen einer Klassenfabrik; Einer erstellt eine Klasse während der Codierungszeit, während der andere eine Klasse während der Laufzeit erstellt.

Ersteres verwendet das Schlüsselwort class, letzteres das Schlüsselwort type. Beide Methoden werden im folgenden Artikel erklärt und gegenübergestellt.

Verwenden Sie das Schlüsselwort class, um eine Klassenfabrik in Python zu erstellen

Wir können eine Klassenfabrik mit dem Schlüsselwort class erstellen. Dazu müssen wir eine Funktion erstellen und eine Klasse innerhalb der Definition der Funktion halten.

Der folgende Code verwendet das Schlüsselwort class, um eine Klassenfabrik in Python zu erstellen.

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())

Der obige Code liefert die folgende Ausgabe.

green

Verwenden Sie das Schlüsselwort type, um eine Klassenfabrik in Python zu erstellen

Das Schlüsselwort type ermöglicht die dynamische Erstellung von Klassen. Wir müssen das Schlüsselwort type verwenden, um eine Klassenfabrik in Python zu erstellen.

Wir sollten jedoch beachten, dass bei Verwendung des Schlüsselworts type die Funktionen nur noch im Namensraum verbleiben, rechts bei der Klasse.

Der folgende Code verwendet das Schlüsselwort type, um eine dynamische Klasse in Python zu erstellen.

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())

Der obige Code liefert die folgende Ausgabe.

green

Das Schlüsselwort type ermöglicht dynamische Klassen und effektive Erstellung zur Laufzeit und Nachteile. Wie Sie im obigen Code sehen können, sind sowohl die Funktionen init als auch getColor im Namensraum unübersichtlich.

Zudem geht auch die Aussicht auf Wiederverwendbarkeit dieser Funktionen verloren, wenn die dynamischen Klassen mit dem Schlüsselwort type erstellt werden.

Eine einfache Lösung hierfür wäre die Einführung einer Klassenfabrik. Es hilft in beide Richtungen, da es das Durcheinander im Code verringert und die Wiederverwendbarkeit der Funktionen fördert.

Der folgende Code verwendet das Schlüsselwort type, um eine Klassenfabrik in Python zu erstellen.

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())

Der obige Code liefert die folgende Ausgabe.

green

Nachdem wir nun gesehen haben, wie eine Klassenfabrik erstellt wird, ist es auch wichtig zu unterscheiden, wann das neu erlernte Konzept der Klassenfabrik verwendet werden sollte und wann nicht.

Im Allgemeinen sind Class Factories nützlich, wenn wir nicht wissen, welche Attribute zugewiesen werden sollen, wenn die Codierung erfolgt.

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

Verwandter Artikel - Python Class