Ich möchte eine Klasse definieren, die __getitem__
unterstützt, aber keine Iteration erlaubt. zum Beispiel:Wie kann ich eine Klasse in Python Unterstützung __getitem__ machen, aber Iteration nicht zulassen?
class B:
def __getitem__(self, k):
return k
cb = B()
for x in cb:
print x
Was könnte ich in die Klasse hinzufügen B
um die for x in cb:
zu zwingen, zum Scheitern verurteilt?
Genau dies zu fragen, und beantwortet sie, falls jemand anderes wissen muss, wie dies zu tun. – grieve
Aus Neugier, * warum * willst du Zugang zu getitem geben, aber nicht iterierbar machen? Was war dein Anwendungsfall? –
Ich habe eine Klasse, die sich wie ein Wörterbuch verhält, aber nicht erbt. Daher definiere ich __getitem__, und wenn jemand versucht, darüber zu iterieren, will ich einen Fehler, anstatt zu versuchen, __getitem__ mit ganzen Zahlen aufzurufen. Nur um klar zu sein, so hätte ich diese spezielle Klasse nicht gewählt, aber meine Entscheidung wurde außer Kraft gesetzt. – grieve