yanmai
Goto Top

Methode in einer Klasse braucht self

Hallo ihr Administratoren,
ich bin gerade dabei, Python zu lernen. Dabei habe ich ein Modul, was 2 Klassen beinhaltet. Einmal die Klasse mit den Querys und einmal die Klasse, die die Querys ausführt. In einem YouTube Tutorial habe ich gelernt, dass man bei allen Methoden in einer Klasse immer als ersten Parameter self angeben muss, die anderen kann man beliebig setzen. Wenn man dann diese Methode der Klasse aufruft, muss man self einfach überspringen.

Hier erstmal der Quellcode:
class sql_login_querys():
    def query_getpasswordbyusername(username):
        if username != "":  
            return "SELECT * FROM 'users' WHERE 'username'='" + username + "'"   
        else:
            return "username is empty"  
    

class sql_login_commander(sql_login_querys):
    def getpasswordbyusername(self, username):
        return sql_login_querys.query_getpasswordbyusername(username)

import databasecommander

def getuserdatafromdatabase(username, password):
    query = databasecommander.sql_login_commander.getpasswordbyusername(None, username)
    print(query)

username = input("Wie heißen Sie? ")  
getuserdatafromdatabase(username, "Test123")  

Nun habe ich im letzten Quellcodeabschnitt als ersten Parameter None eingegeben. Nehme ich diesen raus, bekomme ich einen Fehler, dass ein Parameter fehlt. Das verstehe ich aber nicht, weil ich ja gelernt habe, dass man self überspringen kann...

Kann mir das mal bitte jemand erklären?

Content-Key: 360180

Url: https://administrator.de/contentid/360180

Printed on: April 19, 2024 at 20:04 o'clock

Mitglied: 135111
135111 Jan 07, 2018 updated at 12:58:46 (UTC)
Goto Top
Du hast hier eine Klasse die du erst instanzieren musst bevor du sie nutzt, deine Methoden sind nicht static also fehlen hier bei sql_login_commander am Ende die Klammern.

Videos halte ich zum vernünftigen lernen ungeeignet, lesen ist da immer noch das Mittel der Wahl um es richtig zu verstehen und um wichtige Details nicht zu übersehen.
Lese dazu bitte mal folgende Seite
https://julien.danjou.info/blog/2013/guide-python-static-class-abstract- ...
Das erläutert das ganze eigentlich sehr verständlich.

Gruß @135111