python自学计划-面向对象-16

2018-12-12  本文已影响0人  你缺少想象力

面向对象跟Java还算很像,不过居然有多继承

整个代码直接贴上:

class Human:
    """人类"""# 这是类注释,居然写在下面的,不习惯

    name = ''
    """名字"""

    def getName(self):
        """获取名字"""
        return self.name # 访问类属性

    def __init__(self, name):
        """构造方法"""
        self.name = name


# 继承
class Student(Human):
    """学生类"""

    id = 0
    """学号"""

    def __init__(self, sid, name):
        """子类构造方法"""
        super().__init__(name)  # 调用父类的构造方法
        self.id = sid

    def getID(self):
        return self.id


class Programmer:
    """程序员类"""

    hairCount = 3000

    def __init__(self, count):
        # 方法重写
        self.hairCount = count

    def stayUpLate(self):
        print('熬夜')
        pass

    def getHairCount(self):
        return self.hairCount
        pass


# 多继承,如果没有写构造方法,会调用第一个父类的构造方法
class PSman(Student, Programmer):

    def getHairCount(self):
        return self.hairCount
        pass

    def learnCoding(self):
        print('学习敲代码')


# 继承关系,左边是父类,右边是子类
# human->student->PSman
# Programmer->PSman
print('------Human类------')
print('------Human类------')
human = Human('李四')
print('human.getName()', human.getName())

print('------Student类------')
print('------Student类------')
student = Student(12, 'Tom')
print('student.getName()', student.getName())
print('student.getID()', student.getID())

print('------PSman类------')
print('------PSman类------')
p_sman = PSman(67, 'proA')
print('p_sman.getName()', p_sman.getName())
print('p_sman.getHairCount()', p_sman.getHairCount())
print('p_sman.getID()', p_sman.getID())
p_sman.stayUpLate()
p_sman.learnCoding()

运行结果:

------Human类------
------Human类------
human.getName() 李四
------Student类------
------Student类------
student.getName() Tom
student.getID() 12
------PSman类------
------PSman类------
p_sman.getName() proA
p_sman.getHairCount() 3000
p_sman.getID() 67
熬夜
学习敲代码
上一篇 下一篇

猜你喜欢

热点阅读