Anonymní profil Ales – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Ales – Programujte.comAnonymní profil Ales – Programujte.com

 

Příspěvky odeslané z IP adresy 94.113.146.–

Ales
Python › Dynamické volání method zákl…
30. 9. 2016   #212900

#38 Ales

Sem fakt lachtan, sorry

class Proxy(object):
    
    def __init__(self, server):
        self.server = server

    def __getattr__(self, name):
        def _method_missing(*args, **kwargs):
            if hasattr(self.server, name):
                output = getattr(self.server, name)(*args, **kwargs)
                return output
            else:
                print("Unknown message: " + name)
        return _method_missing

Díky moc

Ales
Python › Dynamické volání method zákl…
29. 9. 2016   #212857

#13 Kit

1. Jednoduché to je, ale o principu přesměrování zpráv zde nemůže být řeč.

2. Kde přesně jsem porušil zapouzdření? 

Ztráta času pro oba

Ales
Python › Dynamické volání method zákl…
29. 9. 2016   #212825

#2 Kit
Upřímně - nerozumím tvojí odpovědi. Proč jsi usoudil, že nechci používat vlastní třídy? Nebo proč na to jdu špatně, ikdyž je to možné samo. Ano, vím co je polymorfismus, díky.

Nevím jak se jinak lépe zeptat - jak dynamicky sestavím volání metody vestavěného typu, např. str.metoda? VlastniTyp.metoda jde přes getattr(object, method), ale getattr(VestavenyTyp, method) mi vrací none. Proč? A jak to dynamicky sestavit? Můžeš mi pls vložit malou ukázku jak jsi to myslel se speciální metodou __str__?

Představ si objekt x, který má vlastnost, do které ukládám instanci třídy y, pokud objekt x nerozumí zaslané zprávě/metodě, pokusí se ji předat objektu y. ( If hasattr(...): getattr(...) )

Snad je to srozumitelnější. Díky za reakci

Ales
Python › Dynamické volání method zákl…
28. 9. 2016   #212822

Zdravím,

mohu v Pythonu dynamicky sestavit volání metody pro základní typ např  str? Pokud bych chtěl dynamicky sestavit např. "{0}".format("jmeno") jak na to?

Pomocí funkce getattr se mi daří dynamicky sestavit volání metody pouze instance vlastních tříd.

Pokud toho v Pythonu u základních typů nelze docílit - proč tomu tak je? Např. v Ruby bez problémů

Díky

Ales
Python › Rozšíření třídy za běhu
18. 8. 2016   #212372

#3 q

Rozumím.

Díky za reakci. 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý