Seite 2 von 2
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Dienstag 11. April 2023, 20:08
von Kalysto
Hallo,
Ich versuche es einmal etwas anders darzustellen.
Ich möchte mit self.device welche in der Barcode Scanner.py erstellt wird auch in meiner Startseite.py zugreifen können konkret so:
Barcode Scanner.py
Code: Alles auswählen
from Startseite import Startseite
class main(SafeAreaView):
def __init__(self):
self.device = 'iPhone'
startseite = Startseite()
startseite.Anmeldung()
if _name__ == '__main__':
main()
Startseite.py:
Code: Alles auswählen
class Startseite():
def Anmeldung():
print(self.device)
in diesem fall würde ich ein Fehler bekommen da self.device in der Startseite.py nicht existiert...
Fehlermeldung:
Code: Alles auswählen
AttributeError: 'Startseite' object has no attribute 'device'
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Dienstag 11. April 2023, 21:24
von Sirius3
Das Modul `Startseite` läßt befürchten, dass Du pro Klasse eine eigene Datei hast. Das ist unsinn, denn Module sollten zusammengehörende Teile bündeln, eine Klasse allein ist für ein Bündel im Normalfall zu wenig.
Module werden wie Methoden und Variablennamen komplett klein geschrieben. Klassen dagegen haben einen großen Anfangsbuchstaben.
Eine Methode braucht immer als erstes Argument `self`, `Anmeldung` hat aber gar kein Argument.
Und wenn Du ein Attribut in einer Methode brauchst, dann mußt Du es __init__ übergeben.
Es ist seltsam, dass Du mit der Inszanz von ›Main‹ nichts machst.
Code: Alles auswählen
class Startseite():
def __init__(self, device):
self.device = device
def anmeldung(self):
print(self.device)
class Main(SafeAreaView):
def __init__(self):
self.device = 'iPhone'
startseite = Startseite(self.device)
startseite.anmeldung()
if _name__ == '__main__':
Main()
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Dienstag 11. April 2023, 21:25
von Dennis89
Code: Alles auswählen
from Startseite import Startseite
class MainIstEinDooferNameFuerDieKlasse:
def __init__(self):
self.device = "iPhone"
def main():
hier_faellt_mir_nichts_ein = MainIstEinDooferNameFuerDieKlasse()
startseite = Startseite(hier_faellt_mir_nichts_ein.device)
startseite.melde_geraet_an()
if __name__ == "__main__":
main()
Code: Alles auswählen
class Startseite:
def __init__(self, device):
self.device = device
def melde_geraet_an(self):
print(self.device)
https://docs.python.org/3/tutorial/classes.html
Nochmal, bleib erst mal in einer Datei, benenne die Klassen etc. ordentlich um und mach bitte eins nach dem anderen. Schau dir die ganzen Tipps aus der 1. Seite noch einmal an.
Ich will dich nicht demotivieren, aber ich glaube so kommen wir hier nicht zum Ziel.
Grüße
Dennis
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 13:37
von Kalysto
Hallo Zusammen,
Danke für die Tipps und Hilfen ich habe zwischenzeitlich weiter probiert und komme nun an ein reißen Problem meiner Seite..
Ich habe folgenden Beispielcode:
Code: Alles auswählen
class BarcodeScanner():
def __init__(self):
self.devcie = 'iPhone'
startseite = Startseite(self.devcie)
startseite.anmeldung()
print(startseite.test_1)
def weitere_seiten():
pass
class Startseite():
def __init__(self, device):
self.device = device
def anmeldung(self):
self.test_1 = 'test 1'
test_2 = 'test 2'
print(self.device)
if __name__ == '__main__':
BarcodeScanner()
in dem bsp. ist es nun "nur" eine Variable (self.device) welche ich in der Anmeldung() benötige in dem richtigen Code sind es ein paar mehr...
ich möchte nun aber nicht jedesmal alle Variablen einzeln übergeben müssen gibt es da eine Möglichkeit das "ganze" self bzw. Objekt zu übergeben sodass ich darauf ganz normal zugreifen kann ?
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 13:49
von __deets__
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 14:23
von Kalysto
__deets__ hat geschrieben: Samstag 15. April 2023, 13:49
Danke schön, ich hatte das selbe vorhin versucht hatte aber einen Schreibfehler
wie sollte man self denn benennen in der zweiten Klasse:
Code: Alles auswählen
class BarcodeSacnner():
def __init__(self):
self.device = 'iPhone'
startseite = Startseite(self)
startseite.Anmeldung()
print(startseite.test_1)
def weitere_seiten():
pass
class Startseite():
def __init__(self, self_1):
self.device = self_1.device
def Anmeldung(self):
self.test_1 = 'test 1'
test_2 = 'test 2'
print(self.device)
if __name__ == '__main__':
BarcodeSacnner()
oder dürfte man so etwas machen:
Code: Alles auswählen
class Startseite():
def __init__(self, self_1):
self.self_1 = self_1
def Anmeldung(self):
self.test_1 = 'test 1'
test_2 = 'test 2'
print(self.self_1.device)
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 15:08
von __deets__
Wieso muss das irgendwas mit self heissen?!? Das kann doch Problemlos barcode_scanner heissen.
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 16:05
von Kalysto
__deets__ hat geschrieben: Samstag 15. April 2023, 15:08
Wieso muss das irgendwas mit self heissen?!? Das kann doch Problemlos barcode_scanner heissen.
gute Frage

von mir aus schon ja ^^
würde man das so dann schreiben können ?:
Code: Alles auswählen
class Startseite():
def __init__(self, barcode_scanner):
self.barcode_scanner = barcode_scanner
def Anmeldung(self):
self.test_1 = 'test 1'
test_2 = 'test 2'
print(self.barcode_scanner.device)
sodass man in der `__init__` nicht alles erneut deklarieren müsste ?
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 16:12
von __deets__
Ja, das kann man so schreiben. Kannst du doch auch einfach ausprobieren.
Und wo wir dabei sind: def Anmeldung ist nicht der PEP8-Konvention entsprechend. Das muss nur klein_mit_unterstrich sein.
Re: richtiges strukturieren von Programm Code / Konfigurations Datei
Verfasst: Samstag 15. April 2023, 16:37
von Kalysto
Probiert hatte ich es schon nur das es die richtige Schreibweise ist.
Hatte ich gesehen und geändert.
vielen Dank @__deets__