22_PY. Atrybuty klas, atrybuty instancji w Python3

Atrybuty instancji to zmienne lub stałe wartości przypisane do instancji.  W języku Python większość danych jest obiektami, są nimi m. in. klasy i instancje. Do każdego obiektu w języku Python można dodać atrybuty. 

Proszę skopiować poniższy kod. Tworzone są trzy grupy znane z poprzedniego wpisu.

class bryły:
    pass
class graniastosłup(bryły):
    pass
class walec(bryły):
    pass
class stożek(bryły):
    pass

 

Kod definiuje instancje w klasach.

Zbiorniki_A = walec()
Zbiorniki_B = graniastosłup()
Pryzmy_FF = stożek()

 

Kolejna część kodu definiuje atrybuty dla klasy i instancji

bryły.atrybut_brył = ['a','b','az','hh']
print (bryły.atrybut_brył)
Zbiorniki_B.stałe_zbiorników = (12,24,53,1)
print (Zbiorniki_B.stałe_zbiorników)
Pryzmy_FF.opisy_dla_grupy = "grupa objęta jest dozorem technicznym"
print (Pryzmy_FF.opisy_dla_grupy)

 

Wynik kodu:

['a', 'b', 'az', 'hh']
(12, 24, 53, 1)
grupa objęta jest dozorem technicznym

 

Jak widać atrybuty instancji oraz klas mogą mieć różne formy od łańcuchy znaków, przez listy, stałe.

Atrybuty mogą być wykorzystywane w dalszej części kodu. Wyniki wyświetlone zostały na ekranie dzięki instrukcji print.

 

Operacje na atrybutach

Schemat zasięgu atrybutów.

 Odwoływania się do atrybutów nadrzędnych 

print (Zbiorniki_B.atrybut_brył)
print (graniastosłup.atrybut_brył)

Instancje mogą odwoływać się do atrybutu dla wszystkich brył zaznaczonego beżowym kolorem na schemacie.

 

 Kasowanie atrybutów 

Atrybuty mogą być również kasowane z kodu.

Poniższy kod kasuje wszystkie atrybuty instancji i klas.

Proszę wkleić ten kod, sprawdzić a następnie skasować. Główny kod wraz z atrybutami będzie jeszcze potrzebny do ćwiczeń.

del bryły.atrybut_brył
del Zbiorniki_B.stałe_zbiorników
del Pryzmy_FF.opisy_dla_grupy

 

 

 Zasłanianie atrybutów innymi atrybutami 

Proszę skopiować poniższy kod pod dotychczasowym kodem.

Zbiorniki_B.atrybut_brył = "POWAŻNA ZMIANA ATRYBUTU"
print (Zbiorniki_B.atrybut_brył)
print (Zbiorniki_A.atrybut_brył)
del Zbiorniki_B.atrybut_brył
print (Zbiorniki_B.atrybut_brył)

 

Atrybut o nazwie atrybut_brył dotyczył wszystkich klas. Czasowo, dla instancji Zbiorniki_B został zawieszony. Po skasowaniu zmiany atrybut_brył wrócił do starej formy dla Zbiorniki_B.

 

 Definiowanie klasy z atrybutami, instancjami i funkcjami 

Dobrym zwyczajem jest tworzyć klasy wraz z instancjami oraz funkcjami. Dobrze jest od razu dopisać atrybuty instancji i klas. To rozwiązanie jest bardziej przyjazne dla programisty czytającego kod.