Python und Klassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
axxter
User
Beiträge: 1
Registriert: Samstag 8. Juli 2006, 12:15

Python ist typfrei in dem Sinn, dass es nicht möglich ist, einen Typ zu definieren. Trotzdem können in Python Klassen definiert werden. Ist das nicht ein Widerspruch?
Benutzeravatar
newone_XXV.
User
Beiträge: 50
Registriert: Dienstag 20. Juni 2006, 15:03
Wohnort: Direkt vor meinem PC
Kontaktdaten:

Wo ist denn da ein Wiederspruch? Ich meine für mich ist das so ziemlich das Gleiche, oder teusche ich mich da?
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

<°)))o><
Don't feed the Troll!
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Benutzeravatar
beewee
User
Beiträge: 35
Registriert: Mittwoch 18. Januar 2006, 22:16

Python ist typfrei in dem Sinn, dass es nicht möglich ist, einen Typ zu definieren. Trotzdem können in Python Klassen definiert werden. Ist das nicht ein Widerspruch?
Hm, ich nehme an mal, du meinst, dass bei der Variablendefinition nicht wie z.B. in Pascal ein fester Typ angegeben wird und somit eine Variable nichts vom "String" oder "Integer" erbt. Das ist aber imho falsch, da Variablen sehr wohl erben, nur halt automatisch, wie man an diesem Beispiel sehen kann:

Code: Alles auswählen

>>> a = "abc"
>>> a.split("b")
['a', 'c']
>>> b = 123
>>> b.split(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'int' object has no attribute 'split'
Die Variable a erbt von "String" die Funktion split, da a ein string ist.
b erbt diese Funktion nicht, da b ein integer ist

Oder hab ich dich falsch verstanden?

BeeWee
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

axxter hat geschrieben:Python ist typfrei in dem Sinn, dass es nicht möglich ist, einen Typ zu definieren.
Falsch.
Du verwechselt dynamische Typisierung mit wie du es nennst, Typfreiheit (womit du vermutlich schwache Typisierung meinst). Python ist aber durchaus Typisiert, nämlich stark dynamisch. Das heißt, dass jeder Name auf ein Objekt zeigt, welches immer einen Typ hat, aber durchaus auch auf ein anderes Objekt zeigen kann, welches einen anderen Typ hat.

Ein Beispiel:

Code: Alles auswählen

In [3]: var = list()
In [4]: type(var)
Out[4]: <type 'list'>
In [5]: var = ""
In [6]: type(var)
Out[6]: <type 'str'>
Weitere Infos gibts in der WIkipedia unter Typisierung.

Edit (Leonidas): Erklärung geändert. Danke fürs erinnern, BlackJack. War etwas unglücklich formuliert.
Zuletzt geändert von Leonidas am Samstag 8. Juli 2006, 21:19, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Der übliche Hinweis das man hier nicht einfach von "Variablen" sprechen sollte, sondern von Objekten, welche an Namen gebunden werden. In Python haben die Objekte den Typ und die Namen nicht. Bei vielen anderen Sprachen ist der Typ (auch) mit dem Namen verbunden.
Antworten