Pracuję z klasą, która emuluje listę Pythona. Chcę go zwrócić jako listę python(), gdy dostęp do niego bez indeksu.Emulacja listy w języku Python
z normalnym listy():
>>> a = [1,2,3] >>> a [1,2,3]
co mi chodzi w istocie:
>>> a = MyList([1,2,3]) >>> a <MyList object at 0xdeadbeef>
nie mogę dowiedzieć się, które metody Dunder (jeśli w ogóle) pozwoliłaby mi dostosować to zachowanie?
Myślałem, że będzie __ dostać __? chociaż list() nie implementuje get/set/delete - chyba dlatego, że jest wbudowany?
wysłałem odpowiedź, ale faktycznie nie jestem pewien co masz na myśli. Czy możesz podać przykład tego, co chcesz osiągnąć? Jeśli chcesz pokazać swoją listę po wpisaniu 'a' w konsoli, to szukasz metody' __repr__' –
To, co widzisz w powłoce interaktywnej, gdy wpiszesz tylko nazwę, to ciąg repr (REPResentational) . Podobnie jest z pierwszym, gdzie prawdziwa lista emituje łańcuch, który wygląda jak kod źródłowy. Idealnie, 'eval (repr (object))' powinien działać dla typów prostych. Więc nie jesteś "uzyskiwania dostępu" go, gdy pokazujesz go w ten sposób, ale "szarpiąc" go. – Keith
Tak, właśnie tego szukałem. Nie wiedziałem, co się tam naprawdę dzieje. – la11111