Seite 2 von 2

Re: geloest

Verfasst: Donnerstag 6. November 2008, 13:20
von xWolf
lunar hat geschrieben: "str()" ist auch keine Funktion, sondern der Python-Typ für Bytestrings. ...
Hallo,

Und ein Einspruch.

Hier ein Auszug aus
Python Referenz
David M. Beazley
Vorwort von Guido van Rossum

Seite 51:
4.5 Typ-Konvertierung
Manchmal ist es notwendig, zwischen eingebauten Typen zu konvertieren. Folgende eingebaute Funktionen ermöglichen eine explizite Typ-Konvertierung:
Funktion.....................Beschreibung
int(x) ........................Konvertiert x in eine Ganzzahl
long(x)......................Konvertiert x in eine lange Ganzzahl
float(x) .....................Konvertiert x in eine Fließkommazahl
complex(real [,imag])..Erzeugt eine komplexe Zahl
str(x)....................Konvertiert Objekt x in eine String-Darstellung
repr(x)..................... Konvertiert Objekt x in einen String-Ausdruck
eval(x)......................Wertet einen String aus und gibt ein
Wolf

Verfasst: Donnerstag 6. November 2008, 13:37
von BlackJack
`str` ist trotzdem ein Typ und keine Funktion:

Code: Alles auswählen

In [285]: str
Out[285]: <type 'str'>

In [286]: pow
Out[286]: <built-in function pow>

In [287]: class A(pow): pass
   .....:
---------------------------------------------------------------------------
<type 'exceptions.TypeError'>             Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

<type 'exceptions.TypeError'>: Error when calling the metaclass bases
    cannot create 'builtin_function_or_method' instances

In [288]: class B(str): pass
   .....:

In [289]: issubclass(str, basestring)
Out[289]: True

Verfasst: Donnerstag 6. November 2008, 18:12
von xWolf
Ist denn das von mir zitierte Buch nun auch falsch?

Oder gibt es vielleicht eine Funktion und einen Type?


Wolf

Verfasst: Donnerstag 6. November 2008, 18:17
von BlackJack
Falsch wäre ein hartes Wort. Ungenau könnte man sagen. Man kann `str()` ja aufrufen und bekommt ein Exemplar vom Typ `str` zurück, wobei das eben die Zeichenkettendarstellung vom übergebenen Argument ist. `str` verhält sich da also wie eine Funktion.

Verfasst: Donnerstag 6. November 2008, 18:21
von xWolf
OK,
Ich gebe mich geschlagen.
ist wohl eine Klasse:
>>> help(str)
ergibt
Help on class str in module __builtin__:

class str(basestring)
| str(object) -> string
|
| Return a nice string representation of the object.
| If the argument is a string, the return value is the same object.
|
| Method resolution order:
| str
| basestring
| object
|
| Methods defined here:

Wolf