Utiliser len () et def __len __ (self): pour construire une classe
Juste curieux,
Est là toute la différence (avantages et inconvénients) entre l'utilisation de len()
ou def __len__()
lorsque je créer une classe? Et quel est le meilleur Python style?
class foo(object):
def __init__(self,obs=[])
self.data = obs
self.max = max(obs)
self.min = min(obs)
self.len = len(obs)
ou
class foo(object):
def __init__(self,obs=[])
self.data = obs
self.max = max(obs)
self.min = min(obs)
def __len__(self):
return len(self.data)
source d'informationauteur Gianni Spear | 2013-02-27
Vous devez vous connecter pour publier un commentaire.
Il y a un énorme différence.
La
__len__()
méthode est un crochet de la méthode. Lelen()
fonction utilisera le__len__
méthode si présent à interroger l'objet de sa longueur.La normal API les gens s'attendent à utiliser est le
len()
méthode, à l'aide d'un.len
attribut plutôt de s'écarter de la norme.Si la longueur de
self.data
ne devrait pas changer, vous pouvez toujours le cache de la longueur dans un attribut et ont.__len__()
retour cet attribut.Il y a plusieurs différences:
len(obj)
syntaxe pourfoo
. La première exigeobj.len()
.self.data
peut changer après la construction, seule la deuxième version de refléter la nouvelle longueur.