Lors de la création d'un script qui émet un jugement selon les règles
Je voulais pouvoir ajouter des règles, alors je l'ai créé
Rendu possible l'exécution en créant une classe qui hérite de Person dans les classes
.
├── 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) #Ajouter un chemin
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", "")
#Charger la classe ici
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.
Est-il dangereux d'implémenter un script qui peut être ajouté sans réécrire le programme?
Existe-t-il une façon plus intelligente d'appeler?
s'il vous plaît dites-moi
Recommended Posts