Je veux créer une classe enfant de liste qui peut convertir tous les éléments automatiquement en un objet quel que soit l'élément créé par init ou ajouter ou étendre. Donc, en utilisant à la fois pour la boucle ou getitem. Voici un exemple de code simple. Quel genre de méthode magique devrais-je utiliser?Comment convertir tous les éléments automatiquement dans une liste en un objet donné en Python
class A():
def __init__(self, name):
self.name = name
def __repr__(self):
return 'Object A with name {}'.format(self.name)
class CustomerList(list):
def __init__(self, *args):
super(CustomerList, self).__init__(*args)
c = CustomerList('a')
c.append('b')
c[0] # Object A with name a
c[1] # Object A with name b
for ele in c:
print(c)
# Object A with name a
# Object A with name b
Que voulez-vous dire en convertissant l'élément en objet? Techniquement, tout est un objet. – TerryA
@TerryA convertit évidemment n'importe quel objet en un objet de type donné, Typiquement, l'objet A dans cet exemple, tout convertir en A. –
Il n'y a aucune méthode magique qui ferait le travail. Vous devez surcharger '__init__',' __setitem__'. "append", "extend", et probablement quelques autres auxquels je ne pense pas pour le moment. – jasonharper