Wpis z mikrobloga

Piszę obecnie w Pythonie 3 koder/dekoder Huffmana. Mam do tego napisane odpowiednie dwie klasy: Coder i Decoder. Żeby odkodować kod trzeba przesłać, oprócz zakodowanych danych, nagłówek zawierający informacje niezbędne do odkodowania.

Zarówno do zakodowania jak i odkodowania potrzebne mi są dwie stałe: znacznik początku nagłówka (HEADERTAG) oraz znacznik początku sekcji danych (DATATAG).

Jak zrobić, żeby dwie różne klasy Coder i Decoder dzieliły te same stałe?
Zrobić jakąś pesudo abstrakcyjną klasę bazową z tymi dwiema stałymi jako takimi zmiennymi klasowymi, a później z tej klasy będą dziedziczyć klasy Coder i Decoder czy da się to jakoś ładniej zrobić?
Kod

#python
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam do tego napisane odpowiednie dwie klasy: Coder i Decoder


You're doin' it wrong!

Programowanie obiektowe opiera się… uwaga… na obiektach! Coder i Decoder to nie obiekt! To powinny być metody (które zresztą już masz; tylko niech się odwołują do self wtedy), a klasą powinien być obiekt w którym trzymasz huffmana.

Wtedy
  • Odpowiedz
@morsik: Hmm, no w sumie wcześniej miałem to tak, że zrobiłem sobie moduł, w module miałem te dwie stałe jako:
_HEADERTAG
_DATATAG

No i miałem dwie funkcje: encode(), decode().

No i tak pomyślałem, że to może w klasę opakować i stąd ten problem. Czyli rozumiem zrobić tak jak było wcześniej? Jeden plik (moduł) w którym po prostu są dwie funkcje do kodowanie/dekodowania?
  • Odpowiedz
Czyli rozumiem zrobić tak jak było wcześniej? Jeden plik (moduł) w którym po prostu są dwie funkcje do kodowanie/dekodowania?


@Lempek: ja bym zrobił po prostu moduł z 2 funkcjami. Na pewno prościej ;)
Na szczęście to jest Python, a nie Java więc nie musisz się silić na klasy.

Piszę czasem w Qt/C++, czasem skrobnę coś w C, a czasem w Pythonie. Naprawdę cenię sobie Pythona właśnie za to, że jak mam obiekty to robię normalną obiektówkę, a jak nie mam, bo chcę tylko przeczytać jsona to po prostu go sobie czytam bez grzebania w 666 klasach i męczenia się z JsonDecoderFactory[1] jak to w Javie bywa (
  • Odpowiedz