====== 02 - Architektur ======
===== Datenkapselung =====
//Wir vermeiden direkte Zugriffe von ausserhalb auf die Attribute einer Klasse. Dadurch können wir das Prinzip der Datenkapselung sicherstellen.//
|{{:howto:codingstandards:zwingend.png?30|}}| Jedes Attribut einer Klasse wird mit //@property// gekennzeichnet. |
|{{:howto:codingstandards:zwingend.png?30|}}| Setter-Funktionen werden mittels //@name//((«//name//» ist der Name der Property; z.B. @temperature.setter))//.setter// gekennzeichnet. |
=== Beispiel ===
class Celsius:
def __init__(self, temperature=0):
self._temperature = temperature
@property
def temperature(self):
print('Getting value... ')
return self._temperature
@temperature.setter
def temperature(self, value):
print('Setting value... ')
if value < -273.15:
raise ValueError('Temperature below -273 is not possible')
self._temperature = value
===== Main =====
//Zum Testen und zur Vermeidung von Fehlern kann ein Pythonskript unterscheiden, ob es direkt ausgeführt wurde oder als Import von einem anderen Skript aufgerufen wurde.//
|{{:howto:codingstandards:zwingend.png?30|}}| Jedes Pythonskript prüft, ob es direkt ausgeführt wird. |
=== Beispiel ===
def hello():
print('Hello World')
if __name__ == '__main__':
hello()