Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: ##python.pl na FreeNode - ogarniamy zlot na Mazurach lub Podlasiu :>?
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Metody o tej samej nazwie ale inne działąnie  (Przeczytany 440 razy)
« : 00:28 13/02/18 »
setesh Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 4


Witam, chciałbym dowiedzieć się czego szukać aby zrobić coś w stylu :

class moja():
(...)
    def printuj(self):
        print "Printuj"
    def warunek(self, war)
        if war == "jeden":
            printuj() # printuj z class jeden
        if war == "dwa":
            printuj() # printuj z class dwa
        if war == "trzy":
            printuj() # printuj z class trzy


class printuj_jeden(moja):
    def printuj(self):
        print "Printuj z jeden"

class printuj_dwa(moja):
    def printuj(self):
        print "Printuj z dwa"

class printuj_trzy(moja):
    def printuj(self):
        print "Printuj z trzy"

moja.warunek(jeden) # ma wypisać "Printuj z jeden"
moje.warunek(dwa) # ma wypisać "Printuj z dwa"
moja.warunek(trzy) # ma wypisać "Printuj z trzy"

I teraz tak...
W zależności od jakiegoś warunku ma sie wywolac funkcja printuj z danej klasy ale wywolujac  metode printuj z klasy moja.

Nie wiem od czego zacząć szukać - wiem co chce osiągnąć ale nie wiem jeszcze jak. Przydałby się jakiś podstawowy tutorial/przykład czy cokolwiek.

Byłbym wdzięczny za chociażby hasła po jakich szukać bo jeszcze tego nie używałem a nie pamiętam jak się to nazywa.
Zapisane
« Odpowiedz #1 : 00:44 13/02/18 »
raydeal Offline
Professional Python User

Zobacz profil
***

Reputacja: 71
Wiadomości: 429


To się nazywa wzorzec projektowy związany z czynnościami/operacjami. Chyba najbardziej do tego co chcesz osiągnąć pasuje Strategia.
Zapisane
« Odpowiedz #2 : 00:45 13/02/18 »
firemark Offline
Advanced Python User

Zobacz profil
**

Reputacja: 14
Wiadomości: 182


Wow - ale to jest pomieszane Chichot

Powinnieneś poczytać więcej o wzorcach projektowych. Tam znajdziesz swą odpowiedź

"Pythonowo" możesz po prostu zrobić metodę która przyjmuje argument klasy która wywoła metodę, albo funkcji jako argument. Klasy możesz zapisać w postaci słownika i je pobierać na podstawie sprecyzowanego warunku.

Napisałbym jaśniej o co mi chodzi ale jest już północ i lecę spać
Zapisane
« Odpowiedz #3 : 01:40 13/02/18 »
gr00by Offline
Hello World!

Zobacz profil
*

Reputacja: 4
Wiadomości: 33


Kod:

class moja(object):

  def __init__(self):
    self.printers = {
      'jeden': printuj_jeden().printuj,
      'dwa': printuj_dwa().printuj,
      'trzy': printuj_trzy().printuj,
    }

  def printuj(self):
    print "Printuj..."

  def warunek(self, war):
    self.printers.get(war, self.printuj)()  # dla nieobslugiwanych `war` uzyje `self.printuj`
 

Zapisane
« Odpowiedz #4 : 09:57 13/02/18 »
setesh Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 4


Dzięki za wszystko. Wieczorem popatrze za tematyką :-)
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot