SORU
3 Mart 2015, Salı


Bir "listesi" nesne için bir resmi veya standart minimal arayüzü yaygın bir bilgi var mı?

this this gibi işlevleri ve belgeleri görüp duruyorum(birkaç isim)ameliyat ya da bakınlistesi gibi nesneler.

Tam olarak gerçek bir liste olduğunu biliyoruz (dir(list)) biriyim, ve ne anlamak olabilir (sık sık değişenbir liste en başvurular gerekli yöntemleri "-listesi", ancak numarasını görüyorum kere başvurulan şu soru ile beni terk etti: . nesnesi

Orada bir resmi ya da bilinen "liste" nesne? bir arabirim standart minimal__getitem__, hayata kadar basit veya __len__ __setitem__gibi ek işler için gerekli olan bu karar her zaman daha kolaydır.

Bu anlambilim gibi görünebilir, ama yardım edemem ama eğer standart minimal arayüzü bir gereksinim varsa oraya değil, çeşitli fikirlerin olduğunu düşünemiyorum< . em ^"list-benzerlik"bazı sorunlar/yanlış kullanım neden olabilir. Belki de bu sadece Python ördek yazmak için küçük bir dezavantajı var?

CEVAP
3 Mart 2015, Salı


collections.abc modülüne bakın. Soyut temel sınıfları varsa, list Python içinde uygular Iterable, , *, *9ContainerSized MutableSequence. Şimdi, bu, Iterable, Sequence MutableSequence raslantı olarak adlandırılabilirlistesi gibi.

Ancak, bu terimi anlamak istiyorumlistesi gibidemek o bir MutableSequence - en azından yöntemleri __getitem__, __setitem__, __delitem__ __len__, bekliyor da var kendisine dahil ederse, bu yöntem belirtilen belgeleri, gibi append.

Varsa gerek yok __setitem__ __delitem__ çağrılmalıdır sırası yerine - bu konuyu da bir şey kabul sırası, değil mi olmalı kesilebilir, böylece str, bytes, tuple vb de iş yok.


Size iki link dönem belirsizlik vurgulamak:

Plotly API list-like nesneleri Python JSONEncoder kodlama çoğu delege olan iç PlotlyJSONEncoder ile bir JSON dizi sıralanmış gerektirir. Ancak, ikinci bir JSON dizisi; böylece tuple list (ve alt) sadece kodlarlistesi gibiburada demek list tuple bir ya da bunların alt. Ya da bir alt sınıfı olmayan özel bir sıra nesnesi TypeError: [...] is not JSON serializable neden olur.

unzip recipe bağlantılı gerektirir bir nesne gibi davranır Sequence, (mutability gerekli değildir), böylece bir tuple str ya da herhangi bir özel nesne uygulama Sequence yapacak.


TL;DRlistesi gibibelirsiz bir terimdir. Tercih edilen bu collections.abc tanımlı şimdi bu şartlarda iterable, dizi ve değişken sıra kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GUN-TIME with Brandon

    GUN-TIME wit

    3 ŞUBAT 2009
  • Jonathan D.

    Jonathan D.

    3 Kasım 2006
  • Kap Slap

    Kap Slap

    8 Mart 2010