Python OOP 数据类型

Python OOP datatype

当数据类型实际上正确时,为什么它说 'Die eingegebenen Daten haben den falschen Datentyp!'?甚至不能只使用 matrNr...虽然我检查了我输入的 matrNr 是一个 int?!

class Student:
    def __init__(self):
        self.matrNr = -1
        self.vorname = ''
        self.nachname = ''
        self.gebDatum = []
        self.email = ''
        self.telNr = ''

    def DatenUebergeben(self, matrNr, vorname, nachname, gebDatum, telNr):  
        if matrNr == int and vorname == str and nachname == str and gebDatum == list and telNr == str:
            print('richtige Datentypen!')
        else:
            print('Die eingegebenen Daten haben den falschen Datentyp!')

student1 = Student()
student1.DatenUebergeben(12345,'linda','f',[2,2,1995],'12345')

背景

通过检查(例如)matrNr == int,您实际上比较了变量 matNr,它是 int<class 'int'> 的一个实例)与 class int (<class 'int'>).

快速修复

您可以使用 type() 函数获取变量的类型,结果为 type(matrNr) == int。这正是您要实现的目标。

更好的解决方案

在 Python 中,您可以通过在参数后添加 : <type> 来定义函数接受的变量类型。因此,更好的解决方案是:

def DatenUebergeben(self, matrNr: int, vorname: str, nachname: str, gebDatum: list, telNr: str):
    # do something