Seite 1 von 1

Klassentyp von Parameter einer Funktion festlegen

Verfasst: Samstag 11. August 2018, 23:02
von Marcell D'Avis
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

Re: Klassentyp von Parameter einer Funktion festlegen

Verfasst: Samstag 11. August 2018, 23:25
von __blackjack__
@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.

Re: Klassentyp von Parameter einer Funktion festlegen

Verfasst: Sonntag 12. August 2018, 09:39
von Sirius3
@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.

Re: Klassentyp von Parameter einer Funktion festlegen

Verfasst: Sonntag 12. August 2018, 17:18
von Marcell D'Avis
@__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

Re: Klassentyp von Parameter einer Funktion festlegen

Verfasst: Sonntag 12. August 2018, 18:14
von sls
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.

Re: Klassentyp von Parameter einer Funktion festlegen

Verfasst: Sonntag 12. August 2018, 18:50
von ThomasL
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.