Seite 1 von 1

Frage zu Klassen

Verfasst: Dienstag 14. Februar 2012, 22:26
von jtschoch
Hi,

ich habe mal eine Frage zu sowas:

Code: Alles auswählen

class.def.def()
#also:
os.path.basename()
wie macht man das?

Ich habe es so versucht :

Code: Alles auswählen

class example:
    def test():
        def test1():
               #Weiterer Code
example.test.text1()    #~Ging nicht!
Da kam eine Fehlermeldung:
AttributeError: 'function' object has no attribute 'body'
Ich hoffe ihr könnt mir helfen!

Re: Frage zu Klassen

Verfasst: Dienstag 14. Februar 2012, 22:29
von Hyperion
Ich kapiere kein Wort! Meinst Du Packages? (Kapitel 6.4 im Tutorial!)

Und die Fehlermeldung passt natürlich nicht zum Code! Und die muss man nicht in rot posten, sondern am besten in Code-Tags...

Re: Frage zu Klassen

Verfasst: Dienstag 14. Februar 2012, 22:38
von /me
jtschoch hat geschrieben:wie macht man das?
Du weißt nicht was es ist, aber du möchtest es unbedingt haben?

Anscheinend bist du im Tutorial noch nicht so weit. Arbeite es einfach weiter durch, denn schon in Kapitel 6 wird erklärt, was es damit auf sich hat.

Re: Frage zu Klassen

Verfasst: Dienstag 14. Februar 2012, 23:15
von deets
Er ist wieder da. Er hat immer noch nichts begriffen. Sind gerade wieder Schulferien?

Re: Frage zu Klassen

Verfasst: Dienstag 14. Februar 2012, 23:35
von cofi
@/me: Sicher, dass es Kapitel 6 ist? Ohne jetzt nachgeschaut zu haben glaube ich nicht, dass im Modul Kapitel Lokale Namen erklaert werden.

@jtschoch: Was denkst du was `test1` ist?




Die Antwort sollte "lokale Funktion" sein, und lokale Namen sind nunmal lokal, dh nicht von aussen zugaenglich.

Code: Alles auswählen

class.def.def()
#also:
os.path.basename()
Und das ist mal grundfalsch .. oh _hier_ waere /me's Kapitel 6 hilfreich ;)

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 16:03
von jtschoch
Ach ja stimmt!
os ist der Modulname, path ist die Klasse und basename ist def!

Ich wollte das eigtlich so machen:

Ich Arbeite zurzeit an einen Projekt namens HTMLCreator.
Da habe ich eine Klasse HTML in der Klasse eine def. und da wollte ich noch eine def body reinmachen,
und wolte es dann so aufrufen:

Code: Alles auswählen

h = HTMLCreator.HTML()
h.css.body()
Aber da kam oben genannte Fehlermeldung, meine Frage ist:
Kann man das irgendwie machen? Geht das überhaupt!

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 16:43
von BlackJack
@jtschoch: `os` ist in dem Fall ein Modulname, aber `path` ist keine Klasse. Das kann man übrigens in einer Python-Shell auch ganz einfach selber heraus finden:

Code: Alles auswählen

In [88]: import os

In [89]: os
Out[89]: <module 'os' from '/usr/lib/python2.6/os.pyc'>

In [90]: os.path
Out[90]: <module 'posixpath' from '/usr/lib/python2.6/posixpath.pyc'>

In [91]: os.path.basename
Out[91]: <function basename at 0xb7781534>

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 17:05
von jtschoch
Achso!

Aber wie könnte ich das machen?

Code: Alles auswählen

h = HTMLCreator.Html()
h.css.body()
Gibt es da eine Möglichkeit?

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 17:47
von BlackJack
@jtschoch: `Html`-Exemplare müssten halt ein `css`-Attribut haben, was seinerseits ein `body`-Attribut hat, dass aufrufbar ist. Natürlich kann man so etwas machen.

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 18:58
von jtschoch
Na wie?

Ich habe es so:

Code: Alles auswählen

class HTML():
    def css():
        def body():
            #~Inhalt
Das nicht Funktioniert!

Re: Frage zu Klassen

Verfasst: Mittwoch 15. Februar 2012, 19:04
von cofi
Da ich mich nicht wiederholen will: http://www.python-forum.de/viewtopic.ph ... 25#p216525

Ich rate mal dringend zu einer Lektuere des Tutorials ...