Commit e6ff34fe by Patryk Czarnik

różne dopiski do klas technicznie

parent e1d554b9
...@@ -40,6 +40,10 @@ class Konto: ...@@ -40,6 +40,10 @@ class Konto:
raise BrakSrodkow(self._numer, kwota, self._saldo) raise BrakSrodkow(self._numer, kwota, self._saldo)
self._saldo -= kwota self._saldo -= kwota
@property
def saldo(self):
return self._saldo
konto = Konto(1, 'Ala', 1000) konto = Konto(1, 'Ala', 1000)
print(konto) print(konto)
...@@ -47,6 +51,7 @@ konto.wplata(200) ...@@ -47,6 +51,7 @@ konto.wplata(200)
print(konto) print(konto)
konto.wyplata(800) konto.wyplata(800)
print(konto) print(konto)
print(konto.saldo)
try: try:
konto.wplata(-50) konto.wplata(-50)
......
...@@ -9,7 +9,7 @@ print(a) ...@@ -9,7 +9,7 @@ print(a)
# Do obiektu można dodać atrybut, nawet, gdy nie było o nim mowy w treści klasy. # Do obiektu można dodać atrybut, nawet, gdy nie było o nim mowy w treści klasy.
a.imie = 'Ala' a.imie = 'Ala'
a.wiek = 30 a.wiek = 30
print(a.imie) print(a.imie, a.wiek)
aa = A() aa = A()
# print(aa.imie) # print(aa.imie)
...@@ -23,7 +23,10 @@ class Osoba: ...@@ -23,7 +23,10 @@ class Osoba:
o = Osoba('Jan', 'Kowalski', 40) o = Osoba('Jan', 'Kowalski', 40)
o.numer_buta = 44 o.numer_buta = 44
print('Osoba', o.imie, 'nosi buty', o.numer_buta)
print()
# Każdy obiekt ma powiązany słownik atrybutów
slownik = o.__dict__ slownik = o.__dict__
print(slownik) print(slownik)
...@@ -34,8 +37,8 @@ print(slownik) ...@@ -34,8 +37,8 @@ print(slownik)
slownik['wiek'] += 10 slownik['wiek'] += 10
slownik['telefon'] = '321321321' slownik['telefon'] = '321321321'
print(o.wiek) print(slownik)
print(o.telefon) print(o.imie, o.wiek, o.telefon)
print() print()
# Przykład zastosowania: wypisywanie wszystkich pól obiektu jako linii tekstu "a la CSV" # Przykład zastosowania: wypisywanie wszystkich pól obiektu jako linii tekstu "a la CSV"
......
...@@ -67,6 +67,9 @@ print(b.lista) ...@@ -67,6 +67,9 @@ print(b.lista)
a.lista.append('Ala') a.lista.append('Ala')
b.lista.append('Ola') b.lista.append('Ola')
Klasa.lista.append('Ela') Klasa.lista.append('Ela')
# nawet ten sam operator +=, który dla inta powodował "oderwanie się" atrybutu od klasy i stworzenie nowego w obiekcie
# dla listy działa inaczej, bo += dla listy jest implementowane jak `extend`
a.lista += ['Karol', 'Krzysztof']
print(a.lista) print(a.lista)
print(b.lista) print(b.lista)
......
...@@ -31,7 +31,8 @@ print() ...@@ -31,7 +31,8 @@ print()
# Aby ostatecznie stracić referencję do obiektu, można też do zmiennej przypisać None # Aby ostatecznie stracić referencję do obiektu, można też do zmiennej przypisać None
a = b = None a = b = None
# W Pythonie można też jawnie usunąć zmienną # W Pythonie można też jawnie usunąć zmienną.
# To nie jest usunięcie obiektu, tylko zmiennej.
del c del c
# To usuwa zmienną, a nie obiekt. Obiekt na normalnych zasadach MOŻE być postprzątany przez garbage collecotra. # To usuwa zmienną, a nie obiekt. Obiekt na normalnych zasadach MOŻE być postprzątany przez garbage collecotra.
......
...@@ -8,10 +8,7 @@ class Student: ...@@ -8,10 +8,7 @@ class Student:
def init_inna_wersja(self, imie, nazwisko, oceny=None): def init_inna_wersja(self, imie, nazwisko, oceny=None):
self.imie = imie self.imie = imie
self.nazwisko = nazwisko self.nazwisko = nazwisko
if oceny: self.oceny = list(oceny) if oceny else []
self.oceny = list(oceny)
else:
self.oceny = []
def dodaj_ocene(self, ocena): def dodaj_ocene(self, ocena):
self.oceny.append(ocena) self.oceny.append(ocena)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment