Seite 1 von 1

Python und Klassen

Verfasst: Samstag 8. Juli 2006, 12:16
von axxter
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?

Verfasst: Samstag 8. Juli 2006, 14:54
von newone_XXV.
Wo ist denn da ein Wiederspruch? Ich meine für mich ist das so ziemlich das Gleiche, oder teusche ich mich da?

Verfasst: Samstag 8. Juli 2006, 15:03
von SigMA
<°)))o><
Don't feed the Troll!

Verfasst: Samstag 8. Juli 2006, 15:05
von beewee
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

Re: Python und Klassen

Verfasst: Samstag 8. Juli 2006, 16:35
von Leonidas
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.

Verfasst: Samstag 8. Juli 2006, 21:02
von 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.