Klassentyp von Parameter einer Funktion festlegen

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
Marcell D'Avis
User
Beiträge: 2
Registriert: Samstag 11. August 2018, 22:38

Hallo,
ich habe folgendes Problem:
Ich habe für einen I2C-Extender eine Klasse AddressClass erstellt mit den Klassenvariablen self.Name, self.Address, self.PinNr erstellt.
Nun möchte ich die Adressen über eine Funktion readAddress( addr ) auslesen und muss dazu auf die Variablen Address und PinNr der übergebenen Adressen-Instanz zugreifen, was auch mit addr.Address bzw. addr.PinNr funktioniert. Jedoch würde ich gerne wie in anderen Programmiersprachen den Klassentyp des Parameters addr angeben um zu verhindern, dass z.B. die Funktion readAddress( addr ) mit einer Zahl als Parameter aufgerufen wird und vor allem, weil Visual Studio angesprochenen Klassenvariablen und Funktionen der nicht überprüfen kann, wenn es die Klasse des angesprochenen Parameters addr nicht kennt. Tippfehler oder falsche Bezeichnungen fallen so leider erst während des Kompilierens auf.
Ich hoffe man versteht mein Problem :) Ich suche eigentlich nur so was ähnliches wie readAddress( addr:AddressClass ) oder wie in C++ readAddress( AddressClass addr ).
Gibt es so etwas?
Liebe Grüße

Marcell, euer Leiter für Kundenzufriedenheit bei 1&1 ;-P
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Marcell D'Avis: Du möchtest kein Python verwenden. Vielleicht magst Du ja Java oder C#.

Zudem lass bitte den unsinnigen `Class`-Zusatz bei `AddressClass` weg und halte Dich an die bei Python üblichen Namenskonventionen: klein_mit_unterstrichen bei allem ausser Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).

Dir wird hier jetzt wahrscheinlich irgendjemand noch mit Typannotationen kommen, allerdings sind das nette Absichtserklärungen, die aber nicht verhindern das jemand falsche Typen übergibt, oder passende Werte die aber einen anderen Typ haben als Du zu erzwingen versuchst.

Die drei Attribute sind übrigens ziemlich sicher/hoffentlich *keine* Klassenattribute sondern Instanzattribute.

Das ein Datentyp `Address` ein Attribut mit dem Namen `address` hat, ist übrigens ein bisschen komisch.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Marcell D'Avis: Du mußt Dich auf jede Programmiersprache einlassen und solltest nicht versuchen, alle Konzepte einer anderen Sprache darauf zu übertragen. Dass Du `readAddress` mit einer Zahl versuchst aufzurufen, passiert ja nur, wenn Du nicht weißt was `readAddress` als Parameter erwartet, Du also Programmieren durch Raten ersetzt.
Gegen Tippfehler hilft, dass praktisch jeder vernünftige Editor heutzutage eine Autovervollständigung für bereits bekannte Namen hat.
Marcell D'Avis
User
Beiträge: 2
Registriert: Samstag 11. August 2018, 22:38

@__blackjack__ und @Sirius3:
Okay daran muss ich mich wohl gewöhnen...
halte Dich an die bei Python üblichen Namenskonventionen
~__blackjack__

Ich werde es in Zukunft versuchen :-)
Die drei Attribute sind übrigens ziemlich sicher/hoffentlich *keine* Klassenattribute sondern Instanzattribute.
~ __blackjack__

Ja stimmt ^^
Gegen Tippfehler hilft, dass praktisch jeder vernünftige Editor heutzutage eine Autovervollständigung für bereits bekannte Namen hat.
~Sirius3

Ich habe bis jetzt Notepad++ und Visual Studio ausprobiert. Welche Editoren könnt ihr denn für Python empfehlen? :D

Auf jeden Fall vielen Dank für eure schnellen Antworten und einen schönen Tag

Marcell
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Marcell D'Avis hat geschrieben: Sonntag 12. August 2018, 17:18 Ich habe bis jetzt Notepad++ und Visual Studio ausprobiert. Welche Editoren könnt ihr denn für Python empfehlen? :D
Da du u.a. eh eine IDE ausprobiert hast, versuche doch mal PyCharm. Das ist IMO *die* IDE für Python überhaupt.
When we say computer, we mean the electronic computer.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Eventuell schau dir mal Visual Studio Code mit der Python Extension an.
Wenn du von Visual Studio kommst ist das vielleicht ein Vorteil.
Des Weiteren ist Sublime Text ein sehr bekannter Editor zum Programmieren.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten