0
votes

Comment créer une instance d'une classe ayant le type de cette classe?

J'écris une sorte de magasin en ligne et j'ai admin classe où je veux ajouter un nouvel employé: xxx

in employé_type Paramètre Je souhaite passer l'un des Employee Mise en œuvre de la classe abstraite ( pilote , consultant , etc.). Mais dans la liste ci-dessus, elle ne crée que Employee instance de classe. xxx

Comment puis-je ajouter une certaine implémentation de employé ?


2 commentaires

Je pense que vous recherchez le modèle d'usine


@Tomerikoo à Python Le motif d'usine est intégré.


3 Réponses :


1
votes

Il suffit d'utiliser post comme constructeur pour un nouvel employé __ add_emloyee xxx


0 commentaires

2
votes
__add_employee("john", "10000", Driver)

0 commentaires

1
votes

Dans Post Paramètre, je veux passer une réalisation de la classe abstraite (pilote, consultant, etc.). Mais dans la liste ci-dessus, il ne crée que l'instance de classe des employés. Comment puis-je ajouter une certaine implémentation d'employé de cette manière? P>

ERR ... Qu'en est-il de l'utilisation du paramètre code> POST CODE> ???? P>

class Admin():
    # preferably use a single leading underscore (convention for
    # "implementation" attributes, ie "protected"), 
    # there are __very__ few real use cases for 
    # `__private` attributes

    _emloyees = {}

    # 1. make te method public so we can use it
    # 2. rename 'post' to something meaningfull
    #    (here you want to pass a class)
    # 3. and of course: __use this param__

    def add_emloyee(self, name, surname, salary, employee_type):
        new_employee = employee_type(name, surname, salary)
        self.__employees.append(new_employee)

# and pass the correct class, of course
a = Admin()
a .add_employee("foo", "bar", 200000, Consultant)

2 commentaires

Merci d'avoir répondu. Oui, je dois être d'accord avec toutes les déclarations. Mais je ne le déploierai nulle part. Ce n'est qu'un travail de laboratoire pour étudier l'UML et l'architecture.


@Pavelantspovich et ceci est en effet typique des exemples de conception totalement inutilés trouvés dans UML ou des "manuels" similaires (ressemble à des personnes qui écrivent ces "manuels" n'ont jamais écrit une demande réelle). Fwiw Je suis un peu soupçonné quelque chose comme ça, et en ce qui me concerne, c'est une raison très convaincante de signaler ces défauts - si vous voulez apprendre "l'architecture" (le mot battage pour "conception de base") au moins apprendre des choses Cela a du sens dans le monde réel ;-)