Py继承、多态、异常、断言

Py这个基础基本就到这了,以后可能会再次更新,基础的话就先到这了,这一章说的是继承、多态和异常
继承:py里面的继承是多继承,是真正的一子多父,下面看代码:这是一个单继承

class Animal:
    name = '动物'
    def __init__(self,inType):
        self.type = inType
    def shout(self):
        print ('我要叫起来')
class Tiger(Animal):
    def __init__(self,inType,inName,inAge):
        #Animal.__init__(self,inType)#继承父类的构造方法,也就是说继承父类的实例属性
        super(Tiger,self).__init__(inType)#也可这样写继承构造方法
        # 经典类的写法: 父类名称.__init__(self, 参数1,参数2,...)
        # 新式类的写法:super(子类,self).__init__(参数1,参数2,....)
        self.tigername = inName
        self.age = inAge
    def sleep(self):
        print('%s的%s今年%d说我要睡觉'%(self.type,self.tigername,self.age))
t1 = Tiger('哺乳类','大花',13)
t1.sleep()#哺乳类的大花今年13说我要睡觉
t1.shout()#我要叫起来#可以直接调用父类的shout()方法
print(t1.name)#动物#直接调用父类的静态

多继承

 class Animal:
        name = '动物'
        def __init__(self,inType):
            self.type = inType
        def shout(self):
            print ('我要叫起来')
    class Mal:
        name = '哺乳类动物'
        type1 = '哺乳类'
        def walk(self):
            print('我在走路')
    class Sheep(Mal,Animal):
        pass
    s1 = Sheep('哺乳')
    print(s1.name)#调用的是Mal()里面的name,多继承时间哪个继承类写前面同样的静态属性就用哪个,先来后到#哺乳类动物
    print(s1.type1)#哺乳类
    print(s1.type)#哺乳

下面再来说说多态
多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
Pyhon 很多语法都是支持多态的,比如 len(),sorted(), 你给len传字符串就返回字符串的长度,传列表就返回列表长度。摘抄自https://www.cnblogs.com/bigberg/p/7182741.html
下面写一段代码来看下:

class Animal:
    name = '动物'
    def __init__(self,inType):
        self.type = inType
    def shout(self):
        print ('我要叫起来')
class Sheep(Animal):
    pass
class Tiger(Animal):
    def __init__(self,inType,inName,inAge):
        super(Tiger,self).__init__(inType)#也可这样写继承构造方法
        self.tigername = inName
        self.age = inAge
    def sleep(self):
        print('%s的%s今年%d说我要睡觉'%(self.type,self.tigername,self.age))
t1 = Tiger('哺乳类','大花',13)
s1 = Sheep('哺乳')
#这种方法是正常的使用实例调用父类的方法
t1.shout()
s1.shout()
#使用多态, 提供统一api,  类似len(l)
def func (obj):
    obj.shout()
func(t1)
func(s1)

在说下异常还是看代码,写成while 死循环只是为了输入方便

while True:
    num = input('input a num')
    try:
        print('100/%s=%s'%(num,100.0/int(num)))#此时输入0和字母时是会报错的,所以引入异常进行处理
    # except ZeroDivisionError as e:#e是异常类型所取的别名,这是捕获处理的已知的一个异常,
    #     # 就是出现在try下方的代码块错误,会做如下处理
    #     print('除数不能为零,请重新输入!',e)
    # except ValueError as e:#捕获处理上方代码块的第二个异常
    #     print('输入类型错误',e)
    # except Exception as e:#可以捕获所有类型的异常,写这个的话就把用再描述专门的异常了
    #     print('输入错误', e)
    except:#这个是最简抛出异常的方法
        print('输入错误')
    else:#没有异常的情况下需要执行的一段代码,可以写在else下的代码块,else必须放在所有except下面,finally上面
        print('没有异常')
    finally:#如果一个代码块不管有没有异常都要执行,那么把他放到finally下的代码块中,finally一定要放到最后
        print('我是必须执行的')

最后在说下断言:如果后续代码很重要,而且依靠前面的数据或者状态,那么这时候需要用到断言举个例子,这个写的比较简单,是因为知道的比较少,以后知道了再来补充

Tel = input('请输入手机号码')
assert len(Tel) == 11,'手机号码位数错误'
print('我的手机号码是{}'.format(Tel))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
封装、继承多态是面向对象编程中的三个重要概念。 封装是指将数据和对数据的操作封装在一个类中,通过访问修饰符来控制对数据的访问权限。这样可以隐藏内部实现细节,提高代码的安全性和可维护性。\[2\] 继承是指一个类可以继承另一个类的属性和方法。通过继承,子类可以重用父类的代码,并且可以在子类中添加新的属性和方法。这样可以提高代码的复用性和可扩展性。\[2\] 多态是指同一个方法在不同的对象上可以有不同的行为。通过多态,可以实现方法的重写和重载,使得程序可以根据对象的实际类型来调用相应的方法。这样可以提高代码的灵活性和可扩展性。\[1\] 总结起来,封装、继承多态是面向对象编程的三个基本特性,它们可以使代码更加模块化、可维护和可扩展。 #### 引用[.reference_title] - *1* *2* [封装、继承多态](https://blog.csdn.net/yahid/article/details/125665027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++ 类的封装继承多态](https://blog.csdn.net/secondtonone1/article/details/124485035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhaoXuWen23

你的鼓励是我的动力,持续更新中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值