Python语法第10讲:面向对象之继承

来源:互联网 发布:实时数据库软件有哪些 编辑:程序博客网 时间:2024/06/06 17:13

继承指的是子类可以继承父类的资源,在Python中支持多继承,也就是说一个儿子可以有多个爸爸

1、继承

在Python中继承显得十分的简洁,如果一个类继承自另一个类,只需将父类放到小括号中添加到子类类名后面即可,多个父类用半角逗号隔开

#基类class Animal:    def __init__(self, name): #构造器        self.name = name            def eat(self):        print("%s 吃东西" %self.name)            def drink(self):        print("%s 喝水" %self.name)#子类class Dog(Animal): #Dog类继承自Animal类,python支持多继承,多个父类用逗号隔开    def __init__(self, name): #构造器        super().__init__(name) #调用父类的构造器            def eat(self): #重写父类的eat方法        print("%s 啃骨头" %self.name)d = Dog("金毛")d.drink()d.eat()
2、常用的函数

#常用的BIFprint(d.__dict__) #查看对象所拥有的属性result = issubclass(Dog, Animal) #判断一个类是否是另一个类的子类print(result)result = isinstance(d, Dog) #判断一个实例对象是否属于一个类print(result)result = hasattr(d, 'name') #判断一个实例对象中是否有某个属性print(result)result = getattr(d, "name", "访问的参数不存在") #获取实例对象的属性值,如果不存在就赋默认值print(result)setattr(d, "name", "一只流浪狗") #给实例对象的属性赋值print(getattr(d, "name"))#delattr(d, "name") #删除实例对象的属性
3、常用的魔法方法

3.1、__new__()

作用是实例化对象时被回调的方法,优先级高于构造方法,__new__()方法要求返回一个对象的实例

#魔法方法:__new__()class CapStr(str): #继承自字符串类    def __new__(cls, something): #__new__()函数,当类被实例化时调用,优先于构造函数        something = something.upper()        return str.__new__(cls, something)result = CapStr("i love u")print(result)
3.2、__del__()

析构函数,和构造函数是对立的,也就是当对象被销毁时回调析构函数

#魔法方法:__del__()class life:        def __init__(self): #构造函数        print("__init__")    def __del__(self): #析构函数        print("__del__")l = life()del l
3.3、__init()__

构造函数,一般用于初始化成员变量





阅读全文
0 0
原创粉丝点击