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__

Code: Alles auswählen

starseite = Startseite(self)

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

Code: Alles auswählen

starseite = Startseite(self)
Danke schön, ich hatte das selbe vorhin versucht hatte aber einen Schreibfehler :oops:

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__