Pytania oznaczone «oop»

1130
Jaki jest cel słowa „ja”?

Jaki jest cel tego selfsłowa w Pythonie? Rozumiem, że odnosi się do konkretnego obiektu utworzonego z tej klasy, ale nie rozumiem, dlaczego musi być jawnie dodawany do każdej funkcji jako parametr. Aby to zilustrować, w Ruby mogę to zrobić: class myClass def myFunc(name) @name = name...

953
Co to jest mixin i dlaczego są przydatne?

W „ Programming Python ” Mark Lutz wspomina o „mixinach”. Pochodzę z środowisk C / C ++ / C # i nie słyszałem wcześniej tego terminu. Co to jest mixin? Czytając między wierszami tego przykładu (do którego podłączyłem, ponieważ jest dość długi), przypuszczam, że jest to przypadek użycia...

861
Jak iterować równolegle dwie listy?

Mam dwie iterowalne wersje w Pythonie i chcę je przeglądać parami: foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print "f: ", f, "; b: ", b Powinno to skutkować: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6 Jednym ze sposobów jest iteracja indeksów: for i in xrange(len(foo)):...

813
Co to znaczy „programować do interfejsu”?

Widziałem to kilka razy i nie jestem pewien, co to znaczy. Kiedy i dlaczego miałbyś to zrobić? Wiem, co robią interfejsy, ale fakt, że nie mam jasności co do tego, sprawia, że ​​myślę, że nie używam ich poprawnie. Czy tak jest, jeśli miałbyś zrobić: IInterface classRef = new...

797
Emulować pętlę „do-while” w Pythonie?

Muszę emulować pętlę „do-while” w programie Python. Niestety następujący prosty kod nie działa: list_of_ints = [ 1, 2, 3 ] iterator = list_of_ints.__iter__() element = None while True: if element: print element try: element = iterator.next() except StopIteration: break print...

790
Co __init__ i ja robimy w Pythonie?

Uczę się języka programowania Python i znalazłem coś, czego nie do końca rozumiem. W metodzie takiej jak: def method(self, blah): def __init__(?): .... .... Co ma selfzrobić? Co to ma być? Czy to jest obowiązkowe? Co robi __init__metoda? Dlaczego jest to konieczne? (itp.) Myślę, że mogą to...

767
Interfejs a klasa podstawowa

Kiedy powinienem używać interfejsu, a kiedy powinienem używać klasy bazowej? Czy powinien to zawsze być interfejs, jeśli nie chcę definiować podstawowej implementacji metod? Jeśli mam klasę psów i kotów. Dlaczego miałbym chcieć wdrożyć IPet zamiast PetBase? Rozumiem, że mam interfejsy dla ISheds...