Eigenes Objekt?

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.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Samstag 18. April 2009, 16:13

Barrabas: Nenn es lieber Instanzmethode, eine Klassenmethode ist was anderes (help(classmethod)). Und amount ist ein Attribut des Objektes, nicht der Klasse.
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Samstag 18. April 2009, 16:41

*lol* danke für den Hinweis - ich stolpere gerne noch über bestimmte Begrifflichkeiten und bitte um Nachsicht.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Samstag 18. April 2009, 20:34

Ich würde es wohl so implementieren(grob orientiert an jscience)
money.py

Code: Alles auswählen

from money import Money, Currency    

EUR = Currency("EUR")
USD = Currency("USD")

# Hier leider Setter notwendig, da properties auf Klassen in python nicht-trivial sind
Currency.set_reference_currency(EUR)
USD.exchange_rate = 0.765872712

print Money(5, USD).convert_to(EUR)
print Money(10, EUR) + Money(5, USD)
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Samstag 18. April 2009, 21:00

@Darii: Was meinst du genau mit "nicht-trivial"?
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Samstag 18. April 2009, 21:17

Siehe Antwort 1: http://stackoverflow.com/questions/1285 ... assmethods , das war mir jedenfalls zuviel Stress für zwei Funktionen. Ich habs auch nur geschrieben, damit nicht irgendwer wegen dem Setter rummeckert...;)
sprudel
User
Beiträge: 245
Registriert: Donnerstag 8. März 2007, 17:12

Dienstag 21. April 2009, 17:31

So, jetzt hab ich das ganze ins Kassensystem eingebaut, funktioniert auch soweit.

JEtzt habe ich nur das Problem: Bei der Eingabe von Geldsummen in verschiedenen Methoden habe ich das Problem dass ich gleich alles wieder durch die Klasse Money jage, so wird die Einheit quasi wieder vergessen.
Habt ihr da eine Idee wie ich überprüfen kann, ob der Eingabewert der Klasse entspricht?

LG Chris
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Dienstag 21. April 2009, 18:39

Hm, mal zu den Properties. Interessehalber, was spricht gegen das hier?

Code: Alles auswählen

class Meta(type):
    def _set_foo(cls, foo):
        print '_set_foo fuer', cls
        cls._foo = foo

    def _get_foo(cls):
        print '_get_foo'
        return cls._foo

    foo = property(_get_foo, _set_foo)

class A(object):
    __metaclass__ = Meta

class B(A):
    pass

A.foo = 123
print A.foo
print B.foo
B.foo = 456
print A.foo
print B.foo
gibt mir

Code: Alles auswählen

_set_foo fuer <class '__main__.A'>
_get_foo
123
_get_foo
123
_set_foo fuer <class '__main__.B'>
_get_foo
123
_get_foo
456
Antworten