_int_ obiekt nie nadaje się do scenariusza

_int_ obiekt nie nadaje się do scenariusza
Obiekt nieastskrypcji w Pythonie odnosi się do obiektów, które działają jako kontenery. Lub obiekt zawiera inne obiekty. Możesz użyć notacji indeksowania, aby uzyskać dostęp do określonych elementów obiektu. Obiekt podlega pomocy, jeśli implementuje metody __getItem __ () lub __class_getitem __ ().

W tym artykule omówiono błąd bez subskrypcji Pythona, co go powoduje i jak go naprawić.

To, co powoduje obiekt „w”, nie jest błędem niegodnym?

Ten błąd jest spowodowany traktowaniem typu liczb całkowitych jako obiektu subskrybowanego w Pythonie.

Oznacza to, że próbujesz uzyskać dostęp do elementów typu INT, który nie jest obsługiwany.

Przykładem jest jak pokazano:

i = 1000
Drukuj (i [0])

W takim przypadku staramy się uzyskać dostęp do elementu typu liczb całkowitych, który nie jest obsługiwany dla obiektu INT.

Uruchomienie powyższego kodu powinno zwrócić błąd, jak pokazano:

$ Python Unbiscribryble.py
Traceback (najnowsze połączenie ostatnie):
Plik „Unastskrypbisble.py ", linia 2, w
Drukuj (i [0])
Typeerror: Obiekt „int” nie jest publiczny

To uniemożliwia nam korzystanie z notacji indeksowania w celu uzyskania dostępu do elementów typu int.

W Python obiekty nie dolegliwe do pomocy obejmują:

  1. strunowy
  2. Tuple
  3. lista
  4. dykt
  5. Każda klasa, która implementuje __getItem __ ()

Jak naprawić typeerror: obiekt „int” nie jest błędem niewolnikiem

Aby naprawić ten rodzaj błędu, należy unikać używania indeksowania notacji w nieobsługiwanym typie.

Jeśli jednak potrzebujesz dostępu do elementów obiektu, możesz go przekonwertować na obiekt niewolniczy.

Na przykład w naszym poprzednim przykładzie możemy przekonwertować liczbę całkowitą na typ ciągu jako jego nie do użytku.

Rozważ ilustrację pokazaną poniżej:

i = 1000
i = str (i)
Drukuj (i [0])

W takim przypadku kod powinien działać i zwrócić element w indeksie 0, jak pokazano:

$ Python Unbiscribryble.py
1

Bonus: wdrażanie __getItem __ () w swojej klasie

W niektórych przypadkach możesz potrzebować, aby Twój obiekt był ubezpieczony. Dlatego musisz zaimplementować metodę __getItem__ w swojej klasie.

Poniższy przykład pokazuje, w jaki sposób utworzyć prosty obiekt niedziałkowy.

klasa myclass:
def __getItem __ (self, klucz):
zwrot
new_Object = myClass ()
print (New_Object [0])

W powyższym przykładzie zaczynamy od utworzenia prostej klasy, która implementuje metodę __getItem__.

Funkcja po prostu weźmie klucz i zwróci się. Na przykład uruchomienie powyższego kodu powinno zwrócić:

$ Python Unbiscribryble.py
0

Możesz użyć tej notacji, aby uzyskać określony element swojego obiektu.

Przykładem jest jak pokazano:

Samochód klasowy:
def __init __ (self, model):
samego siebie.model = model
def __getItem __ (self, klucz):
powrót do siebie.model [klucz]
y = samochód („Honda Civic”)
Drukuj (y [0: 5])

W takim przypadku metoda pozwala pobierać elementy w określonym indeksie. Uruchomienie powyższego kodu powinno zwrócić:

$ Python Unbiscribryble.py
Honda

Możesz dowiedzieć się więcej o Python __getItem__ w poniższym zasobie:

https: // dokumenty.pyton.org/3/reference/dataModel.HTML#Obiekt.__Zdobądź przedmiot__

Wniosek

W tym artykule omówiono błąd bez subskrypcji Pythona, co go powoduje i jak go naprawić.