Ein Memo, das ich ausprobiert habe.
.
├── main.py
└── classes.py
classes.py
class Hoge(object):
def __init__(self):
self.name = 'hoge'
def get_name(self):
print(self.name)
class Fuga(object):
def __init__(self):
self.name = 'fuga'
def get_name(self):
print(self.name)
main.py
#Abgesehen von hier`from classes import *`Aber ja
from classes import Hoge
from classes import Fuga
cls = globals()['Hoge']
instance = cls()
instance.get_name() #=> 'hoge'
cls = globals()['Fuga']
instance = cls()
instance.get_name() #=> 'fuga'
classes.py
wird so verwendet, wie es ist.main.py
import classes
cls = getattr(classes, 'Hoge')
instance = cls()
instance.get_name() #=> 'hoge'
cls = getattr(classes, 'Fuga')
instance = cls()
instance.get_name() #=> 'fuga'
Das Zielmodul von getattr
(in diesem Fall classes
) muss eine Klasse enthalten, die dynamisch durch eine Zeichenfolge angegeben wird.
Tatsächlich denke ich, dass es oft in 1 Klasse und 1 Datei unterteilt ist, so dass es nicht sehr praktisch zu sein scheint. Nur als eine Methode.
Ich denke, es gibt andere Möglichkeiten, aber verwendet das praktische Muster "Globale"?
Recommended Posts