[PYTHON] Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann

Bei der Erstellung eines Skripts, das nach den Regeln urteilt

Ich wollte Regeln hinzufügen können, also habe ich sie erstellt

Ermöglicht die Ausführung durch Erstellen einer Klasse, die Person in Klassen erbt

.
├── Main.py
└── classes
    ├── Person.py
    ├── Taro.py
    └── Tom.py

Main.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

# from os.path import join, relpath, splitext
from os import path
from glob import glob
import re
import sys

def main():
    """ Run from Here. """
    dir = "classes"
    exception_file = ["__pycache__", "Person.py"]
    extention = ".py"
    reg = re.compile('.+\\' +extention)

    sys.path.append(dir) #Pfad hinzufügen
    files = [path.relpath(x, dir) for x in glob(path.join(dir, '*'))]
    files = list(set(files) - set(exception_file))

    objs = []
    for x in files:
        if reg.match(x):
            name = x.replace(".py", "")
            #Klasse hier laden
            m = __import__(name, globals(), locals(), [name], 0 )
            o = eval("m."+name+"()")
            objs.append(o)

    for obj in objs:
        obj.say()

if __name__=="__main__":
    main()

Person.py


from abc import ABCMeta
from abc import abstractmethod

class Person(metaclass=ABCMeta):

    @abstractmethod
    def say(self):
        raise NotImplementedError

Taro.py


from Person import Person

class Taro(Person):
    def say(self):
        print("Hello, this is Taro.")

Tom.py


from Person import Person

class Tom(Person):
    def say(self):
        print("Hello, this is Tom.")

out


$ python Main.py 
Hello, this is Taro.
Hello, this is Tom.

Was ich nicht verstehe

Ist es gefährlich, ein Skript zu implementieren, das hinzugefügt werden kann, ohne das Programm neu zu schreiben?

Gibt es eine intelligentere Möglichkeit anzurufen?

Bitte sag mir

Recommended Posts

Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich möchte einfach ein Rauschmodell erstellen
Ich möchte mit Python ein Fenster erstellen
Ich möchte manuell eine Legende mit matplotlib erstellen
Ich möchte vorerst eine Docker-Datei erstellen.
Ich möchte in der Einschlussnotation drucken
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Ich möchte eine Python-Umgebung erstellen
Qiskit: Ich möchte eine Schaltung erstellen, die beliebige Zustände erzeugt! !!
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich möchte einen maschinellen Lerndienst ohne Programmierung erstellen! Web-API
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte einen DataFrame in MSSQL einfügen
Ich möchte ein Spiel mit Python machen
Wenn Sie Word Cloud erstellen möchten.
Ich möchte keinen Codierungstest machen
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Ausführung] (3/3) zu erstellen.
Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen
Ich möchte leicht einen leckeren Laden finden
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Setup] (1/3) zu erstellen.
Ich möchte mit Python in eine Datei schreiben
Ich möchte einen maschinellen Lerndienst ohne Programmierung erstellen! Textklassifizierung
Ich möchte eine Django-App auf Heroku hochladen
Ich möchte eine WEB-Anwendung mit den Daten von League of Legends ① erstellen
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
100 Klopfen bei der Bildverarbeitung !! (021-030) Ich möchte eine Pause machen ...
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte mit einem Knopf am Kolben übergehen
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Erstellen Sie ein Plug-In, das Python Doctest auf Vim ausführt (2)
Erstellen Sie ein Plug-In, um Python Doctest mit Vim (1) auszuführen.
Ich möchte ein beliebtes Paket auf PyPi finden
Ich möchte einfach eine modellbasierte Entwicklungsumgebung erstellen
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte eine Zeichenkette mit Hiragana teilen
Ich möchte ein Paket von Php Redis installieren
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte automatisch eine Unternehmensgründungs-E-Mail senden
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte eine lokale Variable mit Lambda binden
Ich möchte einen Mox-Generator
Erstellen Sie ein Wox-Plugin (Python)
Ich möchte SUDOKU lösen
Ich möchte einen Mox-Generator (2)
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten
Ich möchte viele Prozesse von Python aus starten
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Ich möchte automatisch einen modernen Metal-Bandnamen generieren
Ich habe ein Tool erstellt, um eine Wortwolke aus Wikipedia zu erstellen
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.