In [ ]:
class Adam(): pass
class Ewa(): pass
class Eugeniusz(Adam, Ewa): pass
class Genowefa(Adam, Ewa): pass
class Maksymilian(Adam, Ewa): pass
class Agnieszka(Adam, Ewa): pass
class Marek(Eugeniusz, Genowefa): pass
class Henryka(Maksymilian, Agnieszka): pass
class Andrzej(Marek, Henryka): pass
help(Andrzej)
Andrzej.mro()
super
classname.mro()
i help(classname)
In [ ]:
class DostawcaBrazu(object):
def pobierz_material(self):
return "Braz"
class Kowal():
def stworz(self, *przedmioty):
material = DostawcaBrazu().pobierz_material()
print("Zaczynam prace")
for przedmiot in przedmioty:
print("wykuwam z {0}: ".format(material), przedmiot)
print("Skonczylem prace")
Kowal().stworz("tarcza", "miecz")
In [ ]:
class DostawcaBrazu(object):
def pobierz_material(self):
return "Braz"
class Kowal(object):
def stworz(self, *przedmioty):
material = super().pobierz_material()
print("Zaczynam prace")
for przedmiot in przedmioty:
print("wykuwam z {0}: ".format(material), przedmiot)
print("Skonczylem prace")
class BrazKowal(Kowal, DostawcaBrazu):
pass
BrazKowal().stworz("tarcza", "miecz")
In [ ]:
class DostawcaStali(object):
def pobierz_material(self):
return "Stal"
class StalowyKowal(Kowal, DostawcaStali):
pass
StalowyKowal().stworz("tarcza", "miecz", "zbroja")
In [ ]:
import requests
class PodstawoweOperacje():
def pobierz_dane_z_internetu(self):
return requests.get(url="http://www.trojmiasto.pl")
def parsuj_dane(self, dane):
print("Parsuje dane")
print(dane)
return "Dane sparsowane"
class WykonajAsynchronicznaOperacje(PodstawoweOperacje):
def wykonaj(self):
dane = super().pobierz_dane_z_internetu()
super().parsuj_dane(dane)
WykonajAsynchronicznaOperacje().wykonaj()
In [ ]:
import requests
class MockPodstawowychOperacji(PodstawoweOperacje):
def pobierz_dane_z_internetu(self):
return "Dane z internetuj"
def parsuj_dane(self, dane):
print("Parsuje dane")
print(dane)
return "Dane sparsowane"
class MockWykonajAsynchronicznaOperacje(WykonajAsynchronicznaOperacje, MockPodstawowychOperacji):
pass
MockWykonajAsynchronicznaOperacje().wykonaj()
In [ ]:
class DoKwadratuMixin():
def do_kwadratu(self, liczba):
return liczba ** 2
class ObiektMatematyczny(DoKwadratuMixin):
pass
print(ObiektMatematyczny().do_kwadratu(4))
In [ ]:
class ModelCacheMixin(object):
CACHE_PREFIX = None
@classmethod
def set_cache(cls, id, value, timeout=30*60):
cache.set(cls.CACHE_PREFIX % id, value, timeout=timeout)
@classmethod
def get_cached(cls, id, timeout=30*60):
cached_object = cache.get(cls.CACHE_PREFIX % id)
if cached_object:
return cached_object
else:
entity = cls.objects.get(id=id)
cls.set_cache(id, entity, timeout=timeout)
return entity
@classmethod
def get_cache(cls, id):
return cache.get(cls.CACHE_PREFIX % id)
@classmethod
def get_cached_or_none(cls, id):
try:
return cls.get_cached(id)
except cls.DoesNotExist:
return None
@classmethod
def get_cached_or_404(cls, id):
try:
return cls.get_cached(id)
except cls.DoesNotExist:
raise Http404()
@classmethod
def cache_delete(cls, id):
cache.delete(cls.CACHE_PREFIX % id)