python学习笔记(二十四)继承与封装

继承(extends)就是把多个类中相同的成员给提取出来定义到一个独立的类中,然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些类容,这个关系就叫做继承。

实现继承的类称为子类,也叫派生类,而被继承的类称为父类,也叫超类或基类。

类的属性和方法可以被继承

注意:私有属性和方法不能被继承,构造方法也不能被继承

继承的好处:

1)提高代码的重用性和扩展性

2)模拟现实世界的关系

3)结构更清晰

继承的弊端:

1)让类的耦合性增强(某个类的改变就会影响其他和该类相关的类)

2)打破了封装性

写代码的原则:低耦合、高内聚。

耦合:类和类的关系

内聚:自己完成某件事的能力

下面看看继承的实例吧,代码如下:

class Dady(object):
    def __init__(self):
        self.money = 1000000000
        self.house = '3环里20套'
    def sing(self):
        print('唱歌')
    def dance(self):
        print('跳广场舞')
    def lm(self):
        print('找朋友')

class Son(Zll):    #继承只需在子类括号中写上父类类名就可以继承了
    def dance(self):   #重写dance(self)这个方法
        print('跳霹雳舞')

if __name__ == '__main__':   #调试代码使用
    aa = Son()     #实例化一个son,这样他会继承Dady类里的属性和方法
    print(aa.house)    #继承父类属性
    print(aa.money)   #继承父类属性
    aa.lm()        #继承父类的lm()方法
    aa.dance()   #重写了的dance是调用son类自己的 

如果我们在项目中需要使用到mysql和redis,那么这两个的连接信息我们可以写在基类中,然后redis类和mysql类分别继承基类,这样就提高了代码的重用性。

class Base(object):
    def __init__(self,host,port,password):
        self.host = host,
        self.port = port
        self.password = password

class Mysql(Base):
    pass
class Redis(Base):
    pass

猜你喜欢

转载自www.cnblogs.com/mululu/p/9072976.html
今日推荐