Correspondance string - nom de variable

Correspondance string - nom de variable - Python - Programmation

Marsh Posté le 05-07-2004 à 11:56:18    

Bonjour,
j'aimerais récupérer un nom de variable à partir d'une string
 


class CoreNodeManager:
     
    def __init__(self, rootnode):
        self.coreList = []
        self.infosList = ['name', 'ip', 'hostname', 'port-listen', \
                         'location', 'load']
        self.detailsList = ['creator', 'creation-date']
        self.connectedtoList = []
        self.tcpList = ['coreid']
        self.udpList = ['coreid']
    # END __init__
 
    def handleAddOperation(self, path, type, **dict):
        attributeList = 'self.' + str(type) + 'List'
        for attribute in attributeList:
              ...


 
pour le moment ces lignes ne font pas ce que je veux, car elles effectuent un parcours de la chaine 's e l f .' etc...
"attributeList = 'self.' + str(type) + 'List'
for attribute in attributeList:"
 
je voudrais récupérer une des listes déclarées dans l'init  
est-il possible de tirer parti des conventions de nommage des listes en utilisant une concaténation?
 
 

Reply

Marsh Posté le 05-07-2004 à 11:56:18   

Reply

Marsh Posté le 05-07-2004 à 12:42:32    

Regarde getattr(object, name), tu lui donnes 1 ref sur un objet et 1 string et ca te donne le membre "name" de l'objet "object"
 
genre la, tu demandes getattr(self, "tcpList" ) et il te rend self.tcpList.
Par contre il me semble qu'il rend une copie, pas la reference

Reply

Marsh Posté le 05-07-2004 à 12:48:45    

Masklinn a écrit :

Regarde getattr(object, name), tu lui donnes 1 ref sur un objet et 1 string et ca te donne le membre "name" de l'objet "object"
 
genre la, tu demandes getattr(self, "tcpList" ) et il te rend self.tcpList.
Par contre il me semble qu'il rend une copie, pas la reference


 
Il renvoie la valeur qu'il y a dans l'attribut bien sur. Si l'objet est mutable tu peux le modifier et sinon il faut passer par setattr.

Reply

Marsh Posté le 05-07-2004 à 12:53:09    

vala comme le monsieur a dit

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed