5.14学习笔记(python基础教程) P119:self参数正是⽅法和函数的区别。⽅法(更专业⼀点可以成为绑定⽅法)将它们的第⼀个参数绑定到所属的实例上,因此⽆需显式提 供该参数。当然也可将特性绑定到⼀个普通函数上,这样就不会有特殊的self参数了。 让⽅法变成私有:在名字前⾯加上双下划线 class Secretive: def __inaccessible(self): print("Bet you can't see me") def accessible(self): print("The secret message is:") self.__inaccessible() s = Secretive() s.__inaccessible() \\此⾏报错 s._Secretive.inaccessible s.accessible() 超类:将其他类名写在class语句后的圆括号内可以指定超类 class Filter: def init(self): self.blocked=[] def filter(self,sequence): return [x for x i 在Python编程语言中,了解对象和类的基本概念是至关重要的,特别是对于初学者而言。本节将深入探讨Python中的self参数、私有方法、超类和多重继承等关键概念。 self参数是Python面向对象编程的一个核心特征,它在类的方法定义中占据首要位置。self参数实际上是一个指向类实例本身的引用,它允许我们在方法内部访问和操作实例的属性。例如,当创建一个名为`Secretive`的类,并定义方法`__inaccessible`和`accessible`时,`self`参数用于在`accessible`方法中调用私有方法`__inaccessible`。然而,直接通过实例调用私有方法`__inaccessible`会引发错误,因为Python默认保护这类方法不被外部直接访问。可以通过`_Secretive.inaccessible`来间接调用,但这并不是推荐的做法。 私有方法的命名约定是在方法名前加两个下划线`__`,这样做是为了表明这些方法不希望在类外部被直接调用。虽然Python没有严格的私有成员,但这种命名约定是标准实践,以避免意外的外部修改。 接下来,我们讨论超类的概念。超类是类的基类,它定义了一组方法和属性,这些可以在子类中继承和扩展。在Python中,通过在`class`语句后的圆括号内指定超类,如`class Filter`。`Filter`类定义了`__init__`和`filter`方法,前者用于初始化实例,后者用于过滤序列。`SPAMFilter`类继承自`Filter`,并重写了`__init__`方法,同时保留了`filter`方法。这样,`SPAMFilter`就具备了处理特定过滤需求的能力,比如过滤掉'SPAM'元素。 多重继承允许一个类继承多个超类的属性和方法。在`Calculator`和`Talker`类的基础上,我们创建了一个`TalkingCalculator`类,它继承了`Calculator`的计算功能和`Talker`的说话功能。通过这种方式,`TalkingCalculator`实例既可以执行数学运算,也可以报告结果。 此外,Python还提供了检查和调用方法的能力。`hasattr`函数用于检查一个对象是否具有特定的属性或方法,而`getattr`则用于获取该属性或方法。例如,我们可以用`hasattr(tc, 'talk')`来确认`tc`实例是否具有`talk`方法,然后通过`getattr(tc, 'talk')`获取这个方法,再用`callable`检查它是否可调用。 在异常处理方面,Python的`try/except`结构用于捕获和处理运行时错误。在给定的代码示例中,尝试除以零会引发`ZeroDivisionError`,尝试将字符串与整数相除会引发`TypeError`。通过在`except`块中指定多个异常类型,我们可以同时处理这两种情况,并打印出具体的错误信息。 总结来说,这些知识点构成了Python面向对象编程的基础,包括self参数的作用、私有方法的实现、超类和子类的继承关系以及异常处理的技巧。理解这些概念对于编写高效、可维护的Python代码至关重要。
- 粉丝: 105
- 资源: 9352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助