Seite 1 von 1
Attribute type 'ethanol' has no attribute 'ah'
Verfasst: Mittwoch 21. April 2021, 19:35
von snjackshot
Guten Tag,
folgendes Problem wenn ich diese Klasse verwenden möchte:
Code: Alles auswählen
class ethanol:
self.Ah=1232785
self.Bh=0.32297
self.Ch=0.037345
self.Dh=-0.042848
self.Eh=0.018252
Code: Alles auswählen
def FdhLV(TinC,struktur):
A=struktur.Ah;B=struktur.Bh;C=struktur.Ch;D=struktur.Dh;E=struktur.Eh;
Tkrit_inK=struktur.Tkrit;
TinK=TinC+273.15;
faktor=TinK/Tkrit_inK;
if faktor>1:
y=0
else:
y=(A*(1-faktor)**(B+C*faktor+D*faktor**2+E*faktor**3))/1000
return y
und dann zeigt mir Phyton an:
Code: Alles auswählen
AttributeError: type object 'ethanol' has no attribute 'Ah'
Ich versteh nicht warum.
Re: Attribute type 'ethanol' has no attribute 'ah'
Verfasst: Mittwoch 21. April 2021, 20:00
von pillmuncher
Das, was du präsentierst, ist entweder nicht der Code, den du tatsächlich hat, oder der Fehler, den du bekommst, ist ein anderer. Guckstu:
Code: Alles auswählen
python3
Python 3.7.10 (default, Feb 26 2021, 15:35:19)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> class ethanol:
... self.Ah=1232785
... self.Bh=0.32297
... self.Ch=0.037345
... self.Dh=-0.042848
... self.Eh=0.018252
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in ethanol
NameError: name 'self' is not defined
Re: Attribute type 'ethanol' has no attribute 'ah'
Verfasst: Mittwoch 21. April 2021, 20:08
von Dennis89
Hallo,
bitte verwende keine so gar nichts sagende Abkürzungen. Wähle immer sprechende Namen. Funktionsnamen sollten beschreiben was die Funktion macht. Diese schreibt man auch klein_mit_unterstrich, so wie andere Namen auch. Ausgenommen sind Konstanten die schreibt man GANZ_GROSS und Klassen schreibt man in CamelCase-Schreibweise.
Kannst du bitte den vollständigen Code am Stück posten?
Ich kann deinen Fehler so nicht nachstellen bzw. wenn ich deinen Code ausprobiere erhalte ich andere Fehlermeldungen.
Die Einrückungen in deiner Klasse stimmen nicht, es wird immer mit vier Leerzeichen eingerückt.
Zum Rest will ich so jetzt noch nichts sagen, da ich nicht weis wie der vollständige Code aussieht.
Re: Attribute type 'ethanol' has no attribute 'ah'
Verfasst: Mittwoch 21. April 2021, 20:56
von __blackjack__
@snjackshot: Wenn man sich die Funktion mal etwas lesbarer formatiert, macht das irgendwie den Eindruck, dass B, C, D, E eventuell eine Liste sein sollten:
Code: Alles auswählen
def FdhLV(TinC, struktur):
faktor = (TinC + 273.15) / struktur.Tkrit
return (
0
if faktor > 1
else (
struktur.Ah
* (1 - faktor)
** (
struktur.Bh
+ struktur.Ch * faktor
+ struktur.Dh * faktor ** 2
+ struktur.Eh * faktor ** 3
)
)
/ 1000
)
Denn dann könnte man den Exponenten anders ausdrücken als jeden Summanden hin zu schreiben:
Code: Alles auswählen
def FdhLV(TinC, struktur):
faktor = (TinC + 273.15) / struktur.Tkrit
return (
0
if faktor > 1
else (
struktur.Ah
* (1 - faktor)
** sum(
value * faktor ** i for i, value in enumerate(struktur.BCDEh)
)
)
/ 1000
)