Ich bin bewusst, eine benutzerdefinierte __repr__
oder __add__
Methode (und so weiter) zu erstellen, um das Verhalten von Operatoren und Funktionen zu ändern. Gibt es eine Methodenüberschreibung für len
?Ist es möglich, das Verhalten von len() zu ändern?
Zum Beispiel:
class Foo:
def __repr__(self):
return "A wild Foo Class in its natural habitat."
foo = Foo()
print(foo) # A wild Foo Class in its natural habitat.
print(repr(foo)) # A wild Foo Class in its natural habitat.
Könnte dies für len
, mit einer Liste getan werden? Normalerweise würde es so aussehen:
foo = []
print(len(foo)) # 0
foo = [1, 2, 3]
print(len(foo)) # 3
Was ist, wenn ich Sucharten aus der Zählung lassen möchte? Wie folgt aus:
class Bar(list):
pass
foo = [Bar(), 1, '']
print(len(foo)) # 3
count = 0
for item in foo:
if not isinstance(item, Bar):
count += 1
print(count) # 2
Gibt es eine Möglichkeit, dies zu tun aus einer list
Unterklasse?
Sie haben bereits gute Antworten, aber im Fall, dass Sie mehr über magische Methoden, um herauszufinden, I [A Guide to Python Magic Methoden] vorschlagen kann (http: // www. rafekettler.com/magicmethods.html);) – swenzel
Dies wird sehr nützlich sein! Danke für das Teilen. @swenzel –
Sie haben eine Liste Unterklasse, keine Liste Oberklasse. – wim