Python七(继承)

一、继承

继承的语法是在方法名后加个括号,在括号中写要继承父类的名字。在Python中,object类是所有类的基类(定义一个类没有指定继承哪个类,就默认继承object类)。

#!/usr/bin/python
#coding=utf-8

#定义一个父类
class Employee(object):
    def __init__(self, name):
        self.__name = name
    def get_name(self):
        return self.__name
    def set_name(self):
        self.__name = name
    def login(self):
        print("Employee In Office")
    def changeSalary(self, newSalary):
        self._salary = newSalary
    def get_Salary(self):
        return self._salary
    
#定义一个子类,继承Employee类
class Manager(Employee):
    def login(self):
        print("Manager In Office")
        print("Check the Account List")
    def attendWeeklyMeeting(self):
        print("Manager attend Weekly Meeting")
        
#使用类
manager = Manager("Nicholas")
print(manager.get_name())
manager.login()
manager.changeSalary(12580)
print(manager.get_Salary())
manager.attendWeeklyMeeting()
笔记:
1、子类Manager重写(也叫覆写或重写)了父类Employee的login方法。
2、由于Manager没有定义__init__方法,所以对象manager调用父类manager的__init__方法。

测试运行:
在这里插入图片描述

二、多继承

#!/usr/bin/python
#coding=utf-8
from ctypes.test.test_pickling import name
from test.test_largefile import size

#定义一个父类
class FileHandle():
    def read(self, path):
        print("reading file")
    def write(self, path, value):
        __path = path
        print("write file")
        
class DBHandle():
    def read(self, path):
        print("reading DB")
    def wirte(self, path, value):
        __path = path
        print("writing DB")

class Tool(FileHandle, DBHandle):
    def businessLogic(self):
        print("In Tool")

tool = Tool()
tool.read("d:\\1.c")
笔记:
1、由于父类FileHandle和DBHandle含有同名方法,子类会根据先继承哪个父类而调用它的方法。

三、通过“组合”来避免多继承

如果子类和父类之间没有从属关系,不应该使用继承,而应使用“组合”。

#!/usr/bin/python
#coding=utf-8

#定义一个父类
class FileHandle():
    def read(self, path):
        print("reading file")
    def write(self, path, value):
        __path = path
        print("write file")
        
class DBHandle():
    def read(self, path):
        print("reading DB")
    def wirte(self, path, value):
        __path = path
        print("writing DB")

class Tool():
    def __init__(self, fileHandle):
        self.fileHandle = fileHandle
        self.dbHandle  = DBHandle()
    def calDataInfile(self, path):
        self.fileHandle.read(path)
    def calDataInDB(self, path):
        self.dbHandle.read(path)
    
fileHandle = FileHandle()
tool = Tool(fileHandle)
tool.calDataInDB("myDB")
tool.calDataInfile("1.c")

测试运行:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值