Un mémo que j'ai essayé.
--Utilisation de Python3.5.2.
.
├── 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
#En dehors d'ici`from classes import *`Mais oui
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
est utilisé tel quel.main.py
import classes
cls = getattr(classes, 'Hoge')
instance = cls()
instance.get_name() #=> 'hoge'
cls = getattr(classes, 'Fuga')
instance = cls()
instance.get_name() #=> 'fuga'
Le module cible de getattr
( classes
dans ce cas) doit inclure une classe qui est spécifiée dynamiquement par une chaîne de caractères.
En fait, je pense qu'il est souvent divisé en 1 classe et 1 fichier, il semble donc que ce n'est pas très pratique. Comme une seule méthode.
Je pense qu'il y a d'autres moyens, mais est-ce que le modèle pratique utilise «globals»?
Recommended Posts