python中super出现的TypeError: must be type, not classobj 原因及解决

python中super出现的TypeError: must be type, not classobj 原因及解决_第1张图片

 

class Person是新类,正常

class Person(object):

      .....

class Person(object):
    def __init__(self):
        print "Person"
        self.name = None
        self.gender = None

    def getName(self):
        return self.name

    def getGender(self):
        return self.gender

class Male(Person):
    def __init__(self, name):
        super(Male, self).__init__()
        print "Hello Mr." + name

class Female(Person):
    def __init__(self, name):
        print "Hello Miss." + name

class Factory:
    def getPerson(self, name, gender):
        if gender == 'M':
                return Male(name)
        if gender == 'F':
                return Female(name)


if __name__ == '__main__':
    factory = Factory()
    person = factory.getPerson("Chetan", "M")




Person
Hello Mr.Chetan
[Finished in 0.1s]
class Person():
    def __init__(self):
        print "Person"
        self.name = None
        self.gender = None

    def getName(self):
        return self.name

    def getGender(self):
        return self.gender

class Male(Person):
    def __init__(self, name):
        super(Male, self).__init__()
        print "Hello Mr." + name

class Female(Person):
    def __init__(self, name):
        print "Hello Miss." + name

class Factory:
    def getPerson(self, name, gender):
        if gender == 'M':
                return Male(name)
        if gender == 'F':
                return Female(name)


if __name__ == '__main__':
    factory = Factory()
    person = factory.getPerson("Chetan", "M")




Traceback (most recent call last):
  File "C:\Users\jackliu\Desktop\traindir\1q.py", line 32, in 
    person = factory.getPerson("Chetan", "M")
  File "C:\Users\jackliu\Desktop\traindir\1q.py", line 25, in getPerson
    return Male(name)
  File "C:\Users\jackliu\Desktop\traindir\1q.py", line 15, in __init__
    super(Male, self).__init__()
TypeError: super() argument 1 must be type, not classobj
[Finished in 0.1s with exit code 1]

class Person():

      .....

经典类报错

你可能感兴趣的:(python)