Question

Je ne peux pas comprendre cela. Dans Terminal, j'importe un module qui instancie une classe, à laquelle je n'ai pas compris comment accéder. Bien sûr, je peux toujours instancier dans Terminal:

Server=Data.ServerData()

Ensuite, je peux obtenir un résultat:

Server.Property().DefaultChart

Cependant, je souhaite ignorer cette étape, en obtenant le résultat directement de l'instance déjà en cours d'exécution dans le module. Je pense que Data.Server devrait dans ce cas charger l'instance de Server à partir du moment où j'ai importé Data:

Data.Server.Property().DefaultChart

>>> AttributeError: 'module' object has no attribute 'Server'

Alors, comment accéder à l'instance en cours d'exécution à partir du terminal?

Était-ce utile?

La solution

Si l'importation de Data.py crée implicitement une instance de la classe Data.ServerData (quelque peu douteuse, mais OK dans certains cas), cela ne nous dit toujours pas comment ce module a choisi de nommer cette instance. Exécutez dir (Data) à l'invite > > > pour afficher tous les noms définis dans le module Data ; si vous voulez voir quels noms (le cas échéant!) ont des valeurs qui sont des instances de Data.ServerData , par exemple:

>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]

Lire le code source de Data.py est peut-être plus simple, mais vous disposez de nombreuses autres options permettant à cette introspection de savoir exactement ce qui se passe (et en quoi il diffère de ce que vous attendiez). je ne sais pas sur quelle base!]] pour continuer).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top