Obtenir le nom des attributs


Bluscream

J'aimerais obtenir le nom de n'importe quel attribut tout en l'itérant.

le ts3defines.py ressemble à ceci :

class VirtualServerProperties(object):
    VIRTUALSERVER_UNIQUE_IDENTIFIER = 0
    VIRTUALSERVER_NAME = 1
    VIRTUALSERVER_WELCOMEMESSAGE = 2
    VIRTUALSERVER_PLATFORM = 3
    VIRTUALSERVER_VERSION = 4
    VIRTUALSERVER_MAXCLIENTS = 5
    VIRTUALSERVER_PASSWORD = 6
    VIRTUALSERVER_CLIENTS_ONLINE = 7
    VIRTUALSERVER_CHANNELS_ONLINE = 8
    VIRTUALSERVER_CREATED = 9
    VIRTUALSERVER_UPTIME = 10
    VIRTUALSERVER_CODEC_ENCRYPTION_MODE = 11
    VIRTUALSERVER_ENDMARKER = 12

la getItems(object)fonction ressemble à ceci :

def getItems(object):
    return [getattr(object, a) for a in dir(object)
                if not a.startswith('__') and not callable(getattr(object, a))]

le code en question ressemble à ceci :

for var in getItems(ts3defines.VirtualServerProperties):
    (err, var) = ts3.getServerVariable(schid, var)
    if err == ts3defines.ERROR_ok and var != "" and var != 0:
        i.append('{0}: {1}'.format(var.__name__, var))

Ma question porte sur le fait var.__name__que cela ne devrait pas renvoyer la chaîne VIRTUALSERVER_BLA, etc.

Pourquoi cela provoque-t-il ?

11/25/2017 16:07:44 pyTSon.PluginHost.infoData  Error   Error calling infoData of python plugin Extended Info: Traceback (most recent call last):
  File "C:/Users/blusc/AppData/Roaming/TS3Client/plugins/pyTSon/scripts\pluginhost.py", line 476, in infoData
    data = p.infoData(schid, aid, atype)
  File "C:/Users/blusc/AppData/Roaming/TS3Client/plugins/pyTSon/scripts\info\__init__.py", line 160, in infoData
    return self.getServerInfo(schid)
  File "C:/Users/blusc/AppData/Roaming/TS3Client/plugins/pyTSon/scripts\info\__init__.py", line 148, in getServerInfo
    i.append('{0}: {1}'.format(var.__name__, var))
AttributeError: 'int' object has no attribute '__name__'
Daniel Roseman

Je ne comprends pas pourquoi vous essayez d'accéder à __name__. Vous avez déjà le nom dans la getItemsméthode ; c'est a. Vous devriez le retourner et l'utiliser dans la boucle.

def getItems(object):
    return [(a, getattr(object, a)) for a in dir(object)
            if not a.startswith('__') and not callable(getattr(object, a))]

...

for name, var in getItems(ts3defines.VirtualServerProperties):
    (err, var) = ts3.getServerVariable(schid, var)
    if err == ts3defines.ERROR_ok and var != "" and var != 0:
        i.append('{0}: {1}'.format(name, var))

Articles connexes


Changer le nom des attributs dans json sans @JsonProperty

Miroslav Brandýský Je dois convertir mon json de camelCase en kebab-case. Exemple: My Json: { "disclaimerConfirmed" : true } Et j'ai besoin: { "disclaimer-confirmed" : true } Je ne peux pas utiliser @JsonProperty car il renomme ces attributs de maniè

Gratter le nom (les valeurs) des attributs dans rvest R

Aiden Blake Je veux gratter la page Web suivante (c'est autorisé ..): https://www.bisafans.de/pokedex/listen/numerisch.php le but est d'extraire un tableau comme suit: numéro Nom type 1 type 2 001 bisasam plante Cadeau 002 ... ... ... J'ai pu gratter le numéro

Gratter le nom (les valeurs) des attributs dans rvest R

Aiden Blake Je veux gratter la page Web suivante (c'est autorisé ..): https://www.bisafans.de/pokedex/listen/numerisch.php le but est d'extraire un tableau comme suit: numéro Nom type 1 type 2 001 bisasam plante Cadeau 002 ... ... ... J'ai pu gratter le numéro

Comment obtenir le prénom et le nom des utilisateurs?

Kathy S @ user.email semble imprimer instantanément l'adresse e-mail d'un utilisateur qui utilise l'application sur n'importe quel widget. Existe-t-il un moyen d'obtenir le nom d'utilisateur (First Last) de la même manière? Morphinisme La solution que j'utilis

Comment obtenir le nom des parents

Ricardo Je sais que je peux obtenir le nom des vues dans Android. Mais comment je fais pour comparer le nom? s'il vous plaît dites-moi C'est ma sortie logcat: android.support.constraint.ConstraintLayout{e888acb V.E...... ........ 0,939-1080,1458 #7f0d00bd app:

Nokogiri - Obtenir des attributs?

Sancarn Essayer d'utiliser nokogiri pour obtenir les valeurs des attributs: require 'nokogiri' doc = Nokogiri::XML("<root attr=1></root>") doc.root.attributes #=> {} Pourquoi ça ne marche pas ...? l'homme d'étain Méditez sur ceci: require 'nokogiri' doc =