Mehrere Argumente in getitemPython

Python-Programme
Anonymous
 Mehrere Argumente in getitem

Post by Anonymous »

Code: Select all

class A:
def __getitem__(self, *args):
print(args.__class__, args)

class B:
def __getitem__(self, args):
print(args.__class__, args)

def f(*args):
print(args.__class__, args)

def g(args):
print(args.__class__, args)
Für Funktionen (f oder g) können wir f(1) = f(*(1,)) = f(1,) identifizieren, aber beim Slicing gibt es einen Unterschied:
  • Code: Select all

    A()[x]
    empfängt das rohe Indexerobjekt x (Schlüssel oder Slice), während A()[x,y] ein Tupel (x,y)
  • empfängt

    Code: Select all

    B()[x]
    empfängt (x,), während B()[x,]((x,)) empfängt
  • Warum erzwingt Python nicht die gleiche Identifikation wie für Funktionen?
  • Wie soll ich ein generisches getitem schreiben, bei dem ich die Anzahl der Indizes wissen möchte? Kann ich zwischen 1 Rohindex x und 1 Tupelindex (x,) unterscheiden? Gibt es eine Möglichkeit, getitem zu schreiben, damit die Identifikation gültig wird?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post