IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 12.4 Python学习笔记【异常处理+类和对象+魔法方法】 -> 正文阅读

[Python知识库]12.4 Python学习笔记【异常处理+类和对象+魔法方法】

1,?尝试一个新的函数 int_input(),当用户输入整数的时候正常返回,否则提示出错并要求重新输入

def int_input(prompt=''):
? ? while True:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#一定大写
? ? ? ? try:
? ? ? ? ? ? int(input(prompt))
? ? ? ? ? ? break
? ? ? ? except ValueError:? ? ? ? ? ? ? ? ? ? ? ? ?#数值是不是整型
? ? ? ? ? ? print("出错啦")

int_input('请输入一个整数:')

2,把文件关闭放在 finally 语句块中执行还是会出现问题,像下边这个代码,当前文件夹中并不存在"My_File.txt"这个文件,那么程序执行起来会发生什么事情呢?你有办法解决这个问题吗?

由于finally语句块里试图去关闭一个并没有成功打开的文件,因此会弹出错误内容如下

>>> 出错啦:[Errno 2] No such file or directory: 'My_File.txt'
Traceback (most recent call last):
? File "C:\Users\FishC000\Desktop\test.py", line 7, in <module>
? ? f.close()
NameError: name 'f' is not defined?

正确如下:

try:

? ? f = open('My_File.txt') # 当前文件夹中并不存在"My_File.txt"这个文件T_T

? ? print(f.read())

except OSError as reason:

? ? print('出错啦:' + str(reason))

finally:

? ? if 'f' in locals(): # 如果文件对象变量存在当前局部变量符号表的话,说明打开成功

? ?? ???f.close()

3,super()函数的理解

super()调用父类的一个方法

class A:
    def add(self,x):
        y=x+1
        print(y)
class B(A):
    def add(self,x):
        super().add(x)
b=B()
b.add(2)

3?

super 函数超级之处在于你不需要明确给出任何基类的名字,它会自动帮您找出所有基类以及对应的方法。由于你不用给出基类的名字,这就意味着你如果需要改变了类继承关系,你只要改变 class 语句里的父类即可,而不必在大量代码中去修改所有被继承的方法。`6a?

4,类和对象一道题

  • 设点 A(X1,Y1)、点 B(X2,Y2),则两点构成的直线长度 |AB| = √((x1-x2)2+(y1-y2)2)
  • Python 中计算开根号可使用 math 模块中的 sqrt 函数
  • 直线需有两点构成,因此初始化时需有两个点(Point)对象作为参数
import math
#不用分号,用sqrt定义math
class Point:
    def __init__(self,x,y):
        self.x=x
        self.y=y
        #x是类变量,self.x是实例变量
        #类变量是所有对象共有,其中一个对象将它的值改变其他对象得到的就是他改变后的结果
        #实例变量是对象私有,某一个对象将其值改变,不影响其他对象
    def getx(self):
        return self.x
    def gety(self):
        return self.y

class Line:
    def __init__(self,p1,p2):
        self.x=p1.getx()-p2.getx()
        self.y=p1.gety()-p2.gety()
        self.len=math.sqrt(self.x*self.x+self.y*self.y)
    def getlen(self):
        return self.len

5,对__new__函数理解

class CapStr(str):
    def __new__(cls,string):
        string=string.upper()
        return str.__new__(cls,string)
  • ?新建一个你需要的新new,目前他里面啥也没有
  • 插入一条将传入的参数转换为大写的功能,
  • 在内建函数new(有功能)中添加这个新功能,
  • 把新的new函数(有功能的)返回给新建的还没有功能的new函数
  • 总而言之,返回一个老的new,再插入一条变大写的代码

6.魔法方法----构造和析构

  • 法方法总是被双下划线包围,例如 __init_
  • __new__ 是在一个对象实例化的时候所调用的第一个方法。它跟其他魔法方法不同,它的第一个参数不是 self 而是这个类(cls),而其他的参数会直接传递给 __init__ 方法的?
  • 什么时候我们需要在类中明确写出 __init__ 方法?34Z
    W}t6<Uk
    答:当我们的实例对象需要有明确的初始化步骤的时候,你可以在 __init__ 方法中部署初始化的代码。给出长和宽范围
  • 下面存在的问题

class Test:
? ? ? ? def __init__(self, x, y):
? ? ? ? ? ? ? ? return x + y

注:__init__返回的值一定是None,不能是其他_

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:12:29  更:2021-12-06 15:13:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:26:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码