J'ai une classe personnalisée,Existe-t-il un moyen de renvoyer une valeur personnalisée pour min et max en Python?
class A:
def __init__(self, a, b):
self.a = a
self.b = b
La classe n'est pas itérables ou indexables ou quelque chose comme ça. Si cela est possible, j'aimerais le garder comme ça. Est-il possible d'avoir quelque chose comme le travail suivant?
>>> x = A(1, 2)
>>> min(x)
1
>>> max(x)
2
Ce qui me fait penser à ce sujet est que min
et max
sont répertoriés comme « Opérations de séquence communes » dans le docs. Puisque range
est considéré comme un type de séquence par les mêmes docs, je pensais qu'il devait y avoir une sorte d'optimisation possible pour range
, et que je pourrais peut-être en profiter.
Peut-être qu'il existe une méthode magique que je ne connais pas qui permettrait cela?
Cet autre message peut vous aider, même si je ne suis pas complètement sûr qu'il fonctionnerait avec min/max; Cela vaut peut-être la peine d'essayer, cependant: https://stackoverflow.com/questions/7875911/how-to-implement-a-minimal-class-that-behaves-like-a-sequence-in-python –
@depperm in cette instance je crois que 'a' sera passé comme' self'. Utiliser 'self' est juste une convention. – cssko
voulez-vous dire que cela fonctionne sans définir '__iter__' /' __next__'? Je ne suis pas sûr de comprendre votre confusion. –