• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python objektowy

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+2 głosów
189 wizyt
pytanie zadane 12 grudnia 2019 w Python przez creend Gaduła (4,700 p.)

Mam problem z funkcją remove w pythonie. Chcę jej użyć na obiekcie lecz gdy to zrobię wyskakuję mi błąd, że w klasie tego obiektu nie ma funkcji remove. Czy da się jakoś to zrobić?

cukier.remove()

 

2
komentarz 12 grudnia 2019 przez adrian17 Ekspert (330,980 p.)

Nie do końca rozumiem.

funkcją remove

Nie ma wbudowanej funkcji remove() w Pythonie. Albo masz na myśli metodę remove() Pythonowej listy, albo metodę remove() Twojej własnej klasy, której nie napisałeś.

Co chcesz, żeby ta linia `cukier.remove()` zrobiła?

2
komentarz 12 grudnia 2019 przez creend Gaduła (4,700 p.)
Myślałem, że funkcja remove usuwa nie tylko element listy ale również jakikolwiek objekt. Czy jest w takim razie funkcja która usuwa objekt?
2
komentarz 12 grudnia 2019 przez adrian17 Ekspert (330,980 p.)

remove() to tylko metody listy (i setu) usuwające element z listy.

Czy jest w takim razie funkcja która usuwa objekt?

A po co chcesz to zrobić? Normalnie nie ma potrzeby robić takich rzeczy ręcznie.

1 odpowiedź

+1 głos
odpowiedź 7 maja 2020 przez TeaCup Obywatel (1,370 p.)

Hej,

Jak chcesz usunąć obiekt to możesz napisać przed tym obiektem słowo kluczowe "del". Na przykład:

class Vehicle:
    def __init__(self):
        print('Vehicle created.')

    def __del__(self):
        print('Destructor called, vehicle deleted.')

car = Vehicle() 
del car  

W ostatniej linijce tego kodu wywołuje się metoda __del__.

Pozdrawiam.

komentarz 7 maja 2020 przez adrian17 Ekspert (330,980 p.)
print('Destructor called, vehicle deleted.')

To nie destructor, to finalizer.

Poza tym, za dokumentacją:

Note

del x doesn’t directly call x.__del__() — the former decrements the reference count for x by one, and the latter is only called when x’s reference count reaches zero.

https://docs.python.org/3/reference/datamodel.html#object.__del__

Najprostszy przykład:

>>> a = A()
>>> b = 1
>>> del a # __del__ not called

 

komentarz 7 maja 2020 przez adrian17 Ekspert (330,980 p.)

No i powtórzę to, co napisałem miesiące temu:

Normalnie nie ma potrzeby robić takich rzeczy ręcznie.

Podobne pytania

0 głosów
1 odpowiedź 79 wizyt
0 głosów
1 odpowiedź 75 wizyt
pytanie zadane 13 grudnia 2022 w Python przez ScoobyDooo Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 86 wizyt
pytanie zadane 20 października 2022 w Python przez benny13 Obywatel (1,150 p.)

90,900 zapytań

139,572 odpowiedzi

313,905 komentarzy

60,373 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...