Funktion zum erstellen eines Objektes

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
borsty88
User
Beiträge: 3
Registriert: Donnerstag 1. Mai 2008, 18:03

hallo

ich würde gerne folgendes tun weis aber nich genau wies funktioniert.
und zwar hab ich eine Variable 'name' und ich würd gern den Wert der Variable als Name eines Objekts nehmen und dieses Objekt soll Element einer Klasse sein.

Code: Alles auswählen

class Klasse(object):
  var = 0
  def new():
    name = input('name')
    name = Klasse()
Problem nur:
er erstellt dann ein Objekt 'name' von 'Klasse'
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Statt `input` sollte man lieber `raw_input` verwenden (weil `input` `eval` benutzt, was meistens eine doofe Idee ist, und bei Benutzereingaben sowieso). Außerdem sollte `new` noch als ersten Parameter ein Exemplar der Klasse (explizit) empfangen, per Konvention wird der Parameter `self` genannt.
Und den Rest verstehe ich nicht wirklich, suchst du eventuell `setattr`?
Zuletzt geändert von Trundle am Donnerstag 1. Mai 2008, 18:28, insgesamt 1-mal geändert.
borsty88
User
Beiträge: 3
Registriert: Donnerstag 1. Mai 2008, 18:03

´ne glaub nich das ma des mit 'setattr' erreicht

nehmen wir an name = 'HALLO'
dann will ich das ein Objekt namens HALLO als Instanz von Klasse entsteht

geht sowas?[/code]
Zuletzt geändert von borsty88 am Donnerstag 1. Mai 2008, 18:33, insgesamt 1-mal geändert.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Mit `setattr` kann man ein Attribut eines Objektes setzen.

Code: Alles auswählen

setattr(spam, 'eggs', value)
wäre also äquivalent zu

Code: Alles auswählen

spam.eggs = value
borsty88
User
Beiträge: 3
Registriert: Donnerstag 1. Mai 2008, 18:03

ne ich will ein NEUES OBJEKT
und dieses neue objekt soll zu einer vorher erstellten Klasse gehören
und wenn gilt (name = 'HALLO') dann soll das OBJEKT HALLO heisen
und wenn ich name = 'Pumukel' mach dann soll das OBJEKT Pumukel heisen
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Du suchst das Stichwort Metaprogrammierung...

Code: Alles auswählen

def createClass(name):
    class Created(object):
        pass
    Created.__name__ = name
    return Created

name = 'Foobar'
cls = createClass(name)
print name == cls.__name__
instance = cls()
Sowas solltest du aber eigentlich niemals brauchen...
BlackJack

Ich verstehe die Ausgangsfrage nicht so recht. Objekte selbst haben keine Namen. Man kann Objekte an Namen binden, aber genau dass geht dynamisch mit `setattr()`.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

BlackJack: er sucht wohl

Code: Alles auswählen

>>> Klasse.new()    # staticmethod() vorausgesetzt
HALLO
>>> HALLO
<__main__.Klasse instance at ...>
Du darfst ihm jetzt zeigen, was er statt dessen machen sollte ;)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten