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

继承指的是子类可以继承父类的资源,在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、常用的函数

#常用的BIF
print(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()__

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





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值