Nachdem ich eine Klasse initialisiert habe, und die noetigen Variablen uebergeben habe, moechte ich ein paar Werte berechnen. Diese sollen innerhalb der Klasse verwendet werden, um weitere Werte zu berechnen. In meinem Beispiel habe ich 4 Werte von einem T-Querschnitt uebergeben, und damit kann ich die Flaeche ausrechnen. Dieses Areal verwende ich dann um weitere Berechnungen innerhalb der Klasse durchzufuehren.
Der Kode funktionert jetzt allerdings nicht, weil ich in der methode "area()" nicht "area(self)" angegeben habe. Dadurch hat die Methode offensichtlich keinen Zugriff auf die 4 Ausgangsparameter. Ich koennte das natuerlich aendern, nur muss ich dann in allen weiteren Formeln immer (self) uebergeben.
Kann ich das irgendwie umgehen? Die Frage ist eigentlich, wie bekommen meine Methoden zugriff auf die 4 Hauptvariablen b, h, hw, hf (bzw. _b, _h, _bw, _hf) ohne dass ich die immer uebergeben muss?
Code: Alles auswählen
class T:
"""T-section properties"""
_h: float
_b: float
_bw: float
_hf: float
type: str = 'T'
def __init__(self, b: float, h: float, bw: float, hf: float): # signals MyOwnException
self._b = b # total width
self._h = h # total self.height
self._bw = bw # beam width
self._hf = hf # slab thickness
if self._b * self._h <= 0 | (self._bw > self._b) | (self._hf > self._h) | (self._bw * self._hf <= 0):
raise Exception('T-section: impossible geometry data')
@property
def b(self):
"""total width"""
return self._b
@property
def h(self):
"""total height"""
return self._h
@property
def bw(self):
"""beam width"""
return self._bw
@property
def hf(self):
"""slab thickness"""
return self._hf
@property
def area():
"""Area of section"""
return self._h * self.bw + self._hf * (self._b - self._bw)