Шаблон проектирования с Python -> абстрактная фабрика

1
8

Я реализовал шаблон проектирования абстрактной фабрики с помощью Python и вижу, что он выдает следующую ошибку. это мой code:

и ошибка:


"""
Abstract Factory
- Abstract Factory Pattern serves to provide 
    an interface for creating related/dependent 
    objects without need to specify their actual class

Car => Benz, Bmw => Suv, Coupe
benz suv = gla
bmw suv => x1
benz coupe => cls bmw coupe =>m2
"""

from abc import ABC, abstractmethod


class Car(ABC): # Abstract Factory
    @abstractmethod
    def call_suv(self):
        pass

    @abstractmethod
    def call_coupe(self):
        pass


class Benz(Car): # Concrete Factory 1
    def call_suv(self):
        return Gla

    def call_coupe(self):
        return Cls


class Bmw(Car): # Concrete Factory 2
    def call_suv(self):
        return X1

    def call_coupe(self):
        return M2


class Suv(ABC): # Abstract Product 1
    @abstractmethod
    def create_suv(self):
        pass


class Coupe(ABC): # Abstract Product 2
    @abstractmethod
    def create_coupe(self):
        pass


class Gla(Suv): # Product 1-1
    def create_suv(self):
        print(f" Benz + suv => Gla") 


class X1(Suv): # Product 2-1
    def create_suv(self):
        print(f" Bmw + suv => X1") 


class M2(Coupe): # Product 2-2
    def create_coupe(self):
        print(f" Bmw + coupe => M2") 


class Cls(Coupe):# Product 1-2
    def create_coupe(self):
        print(f" Benz + coupe => Cls") 


def client_suv(order): #client
    brand = {"bmw": Bmw, "benz": Benz}
    result = brand[order]().call_suv()
    result.create_suv()

def client_coupe(order):#client
    brand = {"bmw": Bmw, "benz": Benz}
    result = brand[order]().call_coupe()
    result.create_coupe()

client_coupe('benz')

❯ python abstract_factory.py                                                                                 ─╯
Traceback (most recent call last):
File "/Users/hmidreza/Desktop/proj/design pattern/abstract_factory.py", line 84, in \<module\>
client_coupe('benz')
File "/Users/hmidreza/Desktop/proj/design pattern/abstract_factory.py", line 82, in client_coupe
result.create_coupe()
TypeError: Cls.create_coupe() missing 1 required positional argument: 'self'
Карп
Вопрос задан18 июля 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.