Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

__setattr__ we własnej klasie a dane wewnętrzne klasy



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Luke



Dołączył: 17 Cze 2007
Posty: 1893
Skąd: Szczecin

PostWysłany: Czw Mar 05, 2015 2:20 pm  OP    Temat postu: __setattr__ we własnej klasie a dane wewnętrzne klasy Odpowiedz z cytatem Pisownia

Kod:
class Test(object):
    def __init__(self):
        self.test = 'test'

    def __setattr__(self, name, value):
        print name, value


Test() // Wyświetla: test test


Chciałbym zrobić coś na wzór samozapisującego się (do pliku) słownika, stąd nadpisuję metodę odpowiedzialną za indeksowanie obiektu.
Problem w tym, że przypisania "z kropką", w tym również te w konstruktorze, również powodują wywołanie __setattr__.
Widzicie może jakieś proste rozwiązanie tego problemu? (Ja widzę niekoniecznie proste i na pewno nie ładne i czytelne).
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
nowator



Dołączył: 16 Sty 2010
Posty: 214
Skąd: Częstochowa

PostWysłany: Czw Mar 05, 2015 6:24 pm      Temat postu: Odpowiedz z cytatem Pisownia

Chyba lepiej przeładować __setitem__ w tym przypadku.
Kod:
class AutosavingDict( object ):

    def __init__(self):
        self.dict = dict()

    def __setitem__(self, key, value):
        # Twoj kod
        self.dict[key] = value

    def __getitem__(self, item):
        return self.dict[item]

dict = AutosavingDict()

dict['test1'] = 1
dict['test2'] = 2

print dict['test1']
print dict['test2']

Output:
Cytat:
1
2

Process finished with exit code 0
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Luke



Dołączył: 17 Cze 2007
Posty: 1893
Skąd: Szczecin

PostWysłany: Czw Mar 05, 2015 9:34 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dokładnie tego szukałem. Dzięki. :)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.16036 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |