Erweiterte Scheibe in Python?

8

Ich versuche, eine BitArray-Klasse zu schreiben, und es wäre geschickt, etwas wie das Array von numpy, x[i:j:k] = val , zu haben.

Wie würde ich das in Python schreiben? Nicht mit dem __setslice__ , oder? Weil das nur drei Argumente braucht und ich brauche vier.

    
Broseph 23.08.2012, 23:50
quelle

2 Antworten

5

__setslice__ ist veraltet - Sie sollten __setitem__ mit einem Slice-Argument verwenden.

Beachten Sie, dass Slices in der Python-Dokumentation nur in den folgenden syntaktischen Formen erstellt werden können: a[i:j:step] , a[i:j, k:l] oder a[..., i:j] . Die Doppelpunkt-basierte Syntax wird verwendet, um ein einzelnes Slice-Objekt zu definieren, aber wie das zweite Beispiel zeigt, können Sie mehrere Slice-Argumente haben (sie werden als Tupel von Slices übergeben).

Hier ist ein Beispiel, das das Argument key ausgibt, um seine Form zu sehen:

%Vor%     
voithos 24.08.2012, 00:03
quelle
1

__setslice__ ist veraltet, siehe Python 3 changelog :

  

__getslice__() , __setslice__() und __delslice__() wurden getötet. Die Syntax a[i:j] wird jetzt in a.__getitem__(slice(i, j)) (oder __setitem__() oder __delitem__() übersetzt, wenn sie als Zuweisungs- oder Löschziel verwendet wird).

Sie können auch einen Schrittwert an slice() übergeben, was bedeutet, dass die Syntax a[i:j:k] in a.__getitem__(slice(i, j, k)) übersetzt wird.

    
Simeon Visser 24.08.2012 00:03
quelle

Tags und Links