Itérer sur des instances d'objets d'une classe donnée en Python
Donné une classe qui tient un registre de ses Objets:
class Person(object):
__registry = []
def __init__(self, name):
self.__registry.append(self)
self.name = name
Comment pourrais-je faire le code suivant (sans l'aide de Personne.__de registre):
for personobject in Person:
print personobject
Lors de mes recherches, j'ai trouvé une astuce que l'on peut aller pour un __metaclass__
avec un __getitem__
-méthode. Des idées comment cela pourrait ressembler?
source d'informationauteur Titusz
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire de votre classe d'objet itérable avec un simple métaclasse.
(J'ai aussi changé
__registry
à_registry
pour le rendre plus facile d'accès à partir de la métaclasse).Ensuite,
Tout d'abord, ne pas utiliser de doubles
__
noms. Ils sont réservés pour l'utilisation de Python. Si vous voulez d'utilisation "privée" unique_
.Deuxième, garder ce genre de chose aussi simple que possible. Ne perdez pas de beaucoup de temps et d'énergie sur quelque chose de complexe. C'est un problème simple, garder le code le plus simple possible pour faire le travail.
vous pouvez le faire avec: