首页 > 编程语言 >python大数据 pycharm中的面向对象-文件读写-异常

python大数据 pycharm中的面向对象-文件读写-异常

时间:2024-05-30 18:02:34浏览次数:23  
标签:name python self 面向对象 print pycharm 父类 class def

一、继承

# 类的定义 
# 旧式类定义 一般在定义单个类时使用
class 类名:
    name = None
    
   	def func(self):
        pass

# 新式类定义   一般在继承时使用
class 类名(指定需要继承的类):
    name = None
    
    def func(self):
        pass

# 新式类定义
class A():
    name = '张三'

    def func(self):
        # pass 不做处理
        pass
# 旧式类
class B:

    age = 20

    def fucn(self):
        pass


print(A.name)
print(B.age)

1-1 单继承

# 单继承  只继承一个类
class Father:

    gender = '男'

    def run(self):
        print('跑步很快')



# 子类继承父类获取父类中属性和方法
class Son(Father):

    # 定义子类的属性和方法
    age = 20

    def play(self):
        print('玩游戏')

        
# 创建子类对象
s = Son()
# 使用子类对象操作父类的属性和方法以及自己的属性和方法
print(s.gender)
print(s.age)

s.run()
s.play()

# 单继承的使用
class Master:
    name = '师父'

    def flapjack(self):
        print('摊鸡蛋煎饼')



class Apprentice(Master):
    # 子类继承后可以不定义属性和方法,直接使用父类的方法
    pass


a = Apprentice()

# 子类使用父类方法
a.flapjack()

1-2 多继承

# 单继承的使用
class Master:
    name = '师父'

    def flapjack(self):
        print('摊鸡蛋煎饼')


class School:

    name = '学校'

    def flapjack(self):
        print('摊肉肠煎饼')


class Apprentice(Master,School):
    # 子类继承后可以不定义属性和方法,直接使用父类的方法

    pass


a = Apprentice()

# 子类使用父类方法
a.flapjack()

# 查看子类的继承父类顺序
print(Apprentice.__mro__)

1-3 方法重写

# 重写父类方法  子类继承父类后定义了一个和父类相同名字的方法

# 单继承的使用
class Master:
    name = '师父'

    def flapjack(self):
        print('摊鸡蛋煎饼')


class Apprentice(Master):

    # 子类中定义了自己方法,和父类方法名一样
    # 子类相当于重写了父类的方法,在执行时按照子类的逻辑执行
    def flapjack(self):
        print('摊手抓饼')


a = Apprentice()
a.flapjack()

1-4 多层继承

# 多层继承
# 重写父类方法  子类继承父类后定义了一个和父类相同名字的方法

# 单继承的使用
class Master:
    name = '师父'
    def flapjack(self):
        print('摊鸡蛋煎饼')


class Apprentice(Master):
    name = '徒弟'
    def flapjack(self):
        print('摊手抓饼')
        super().flapjack()



class LittleApprentice(Apprentice):
    name = '小弟'

    def flapjack(self):
        print('蒸包子')
        super().flapjack()
        

# 创建对象
la = LittleApprentice()
la.flapjack()

print(LittleApprentice.__mro__)
# 多层继承
# 重写父类方法  子类继承父类后定义了一个和父类相同名字的方法

# 单继承的使用
class Master:
    name = '师父'
    def flapjack(self):
        print('摊鸡蛋煎饼')

class School:

    name = '学校'

    def school_flapjack(self):
        print('摊肉肠煎饼')


class Apprentice(Master,School):
    name = '徒弟'
    def flapjack(self):
        print('摊手抓饼')
        super().flapjack()



class LittleApprentice(Apprentice):
    name = '小弟'

    def flapjack(self):
        print('蒸包子')
        super().flapjack()
        

# 创建对象
la = LittleApprentice()
la.flapjack()
la.school_flapjack()
print(LittleApprentice.__mro__)

二,多态

# 多态
class Teacher:

    def __init__(self,name):
        self.name = name

    def run(self):
        print(f'{self.name}老师开车')

    def stop(self):
        print(f'{self.name}老师停车')

class Car:

    def __init__(self,type):
        self.type = type

    def start(self):
        print(f'{self.type}启动')

    def close(self):
        print(f'{self.type}熄火')

t = Teacher('张三')
c = Car('小汽车')

c.start()
t.run()
c.close()
t.stop()
# 多态
class Teacher:

    def __init__(self,name):
        self.name = name

    def run(self):
        print(f'{self.name}老师开车')

    def stop(self):
        print(f'{self.name}老师停车')

class Car(Teacher):

    def __init__(self,type,name):
        super().__init__(name)
        self.type = type

    def start(self):
        print(f'{self.type}启动')
        super().run()
    def close(self):
        print(f'{self.type}熄火')
        super().stop()


c = Car('小汽车','张三')

c.start()
c.close()

# 多态
class Teacher:

    def __init__(self,name):
        self.name = name

    def run(self):
        pass

    def stop(self):
        pass

class Car(Teacher):

    def __init__(self,type,name):
        super().__init__(name)
        self.type = type

    def run(self):
        # 在多态实现时,子类继承父类并对父类方法进行重写
        print(f'{self.type}启动')
        print(f'{self.name}老师开车')
    def stop(self):
        print(f'{self.type}熄火')
        print(f'{self.name}老师停车')

class Metro(Teacher):

    def __init__(self,type,name):
        super().__init__(name)
        self.type = type

    def run(self):
        # 在多态实现时,子类继承父类并对父类方法进行重写
        print(f'{self.type}启动')
        print(f'{self.name}老师乘坐地铁')
        
    def stop(self):
        print(f'{self.type}到站')
        print(f'{self.name}老师下车')


# 单独封装一个行为函数
# 该函数就是对外提供一个函数接口,其他开发人员使用,就调用函数
def action(obj):
    # obj接收一个对象
    obj.run()
    obj.stop()

c = Car('越野车','张三')
action(c)


m = Metro('地铁1号线','李四')
action(m)

三、文件读写

3-1 文件数据读取

# 文件数据读取
# 1-打开文件 创建文件描述符
# open的第一个参数指定读取的文件路径  可以使用绝对路径  也可以使用相对路径  windos的路径需要改斜杠
# 第二参数指定读写方式  r读 w写
# 第三个参数指定文件编码格式,方便读取中文数据  常用的两种utf-8  gbk
f = open('D:/Python大数据就业/4-Python基础/day06-面向对象-文件处理-异常-模块/4-资料/students.txt','r',encoding='utf-8')

# 读取数据文件
# 第一种 读取一行数据
# line_data1 = f.readline()
# print(line_data1)
# line_data2 = f.readline()
# print(line_data2)

# 第二种读取多行数据  将读取的多行数据放入列表中  该方式最常用
lines_data = f.readlines()
print(lines_data)

# 第三种  一次将所有数据读取出来当成一个完整的字符串数据  前面已经读取过数据 read就无法再读到数据 所以在实际开发中三种方式选择一种
# data = f.read()
# print(data)
# print(type(data))


# 数据取完成后可以使用close方法关闭文件
f.close()

3-2 数据写入文件

  • 写入方式

四、异常处理

# 索引下标取值错误
data = 'itcast'
data[100]

# 字典取值错误
data = {'name':'张三'}
data['age']

# 类型错误
data = '100'
data2 = 10
data3 = data/data2

# 文件读取错误 路径不存在
with open('aaa.txt','r',encoding='utf-8') as f:
    f.read()

指定异常类型捕获

# 可以捕获所有异常
try:
    data_str = 'itcast'
    # data_str[100]
    f = open('aasd.txt','r',encoding='utf-8')
except:
    # 捕获到异常处理的业务逻辑
    print('异常被捕获')
    # 异常被捕获后,可以正常执行后续的逻辑
print('其他代码逻辑')

# 捕获固定的异常 处理固定错误
try:
    # data = 15/0
    # f = open('aasd.txt', 'r', encoding='utf-8')
    data_str='itcast'
    data_str[100]
# 捕获指定异常
except (FileNotFoundError,ZeroDivisionError,IndexError):
    print('捕获0为除数的异常')
print('其他代码逻辑')

异常的其他处理

try:
    data = 15/0
    # Exception as e 获取异常的错误信息
    # 可以捕获到异常后输出错误信息
except Exception as e:
    print('异常被捕获')
    print(e)
else:
    print('else  没有异常逻辑')
finally:
    print('finally :无论是否有异常都执行')

函数中的异常处理

def func(a,b):

    data = a + b
    print(data)

try:
    # 调用其他开发人员编写的代码处理错误
    func('10',20)
except Exception as e:
    print(e)

标签:name,python,self,面向对象,print,pycharm,父类,class,def
From: https://blog.csdn.net/m0_62008384/article/details/139327143

相关文章

  • 基于wxpython的时钟小工具
    前言基于python3.10+wxpython的时钟小工具代码由chatgpt3.5生成,作者自己调试。留作后续参考。正文timer_ok.pyimportwximporttimeimportthreadingimportosclassClockCountdownPanel(wx.Panel):def__init__(self,parent):super(ClockCountdown......
  • Ubuntu22.04安装YOLOv5,anaconda,cuda,pycharm步骤
     主要是牛马打工人最近突然接到通知,说要做一个人脸识别的功能,然后我作为“nm”就被迫接了,有一说一,这玩意儿真是ex,因为我笨,看不懂,而且大多数都是因为,真nm服了,为了以后的打工牛,少走弯路,我就想着做一个步骤一.先准备准备(在主目录下)因为看教程时总是纠结安装的路径,之前看教......
  • python 构造函数
    在Python中,构造函数是一个特殊的方法,用于在创建类的实例(对象)时自动调用,以初始化对象的属性。构造函数在类中是通过__init__方法来定义的。它的主要作用是为新创建的对象设置初始状态,即初始化对象的属性。以下是构造函数的几个关键点:方法名称固定:构造函数的名称必须是__in......
  • Ubuntu18.04 + Caffe + python3.7 + CUDA11 + cuDNN8编译记录 转载文章 非原创
    背景这两天接手了一个在两年前基于caffe实现的交互式活体检测的项目,想要让他在python3和CUDA11的环境下运行。但是呢,caffe已经官方宣布不再继续更新,不支持最新版的cuDNN8,那需求摆在这边只好自行想办法,前前后后倒腾了两天,可算是编译成功把项目跑通了,在此记录一下自己配置辛酸史。......
  • 计算机毕业设计python-django生态评价网站系统flask框架
    网站主要使用的模式是管理员上传各地生态图片和一些土地,降雨,植被的数据,用户登录到网站上根据网站上的数据进行生态的评价,综合了多方面的想法和不同的建议,查看网站的人来说能够看到不同的想法,不局限于一种想法,也可以在网站上发表自己的看法,并作出相应的对策。采用前后端分离开发......
  • python-django学院校园失物招领管理系统flask框架
    当前大多数校园失物招领信息主要是由志愿者联合会来组织开展,开展形式主要通过在公共场所填写失物招领信息以及志愿者服务公众号来传播失物招领消息,该公众号主要发布失物招领信息,学生教师需要通过到现场或者志愿者公众号去了解,这种形式主要局限于失主与拾主的联系以及失主的寻物......
  • python+django高校学生兼职信息网站设计pycharm项目flask
     自高等教育改革化,人们普遍重点观点放在了注重学生的学习能力和社会实践之上。为了满足了人们对教育的渴求,保障了人受教育的权利,各高校采取了扩招,广开大门对每位求知好学之人。随着学校人员增多,大量的求职需求也初显了出来。在信息化的时代,人们已经不像从前挨家挨户的求职,投简......
  • PyCharm创建django项目
     1.创建项目 2.查看版本python-mdjango--version  3.启动项目pythonmanage.pyrunserver 解决办法:找到seetings.py文件,然后在settings.py文件头加上:importos继续启动pythonmanage.pyrunserver 4.解决告警问题Ctrl+C停掉后执行pythonmanage.py......
  • 在 Python 中转换为 np.array 时的内存饱和与内核重启
    在将处理过的数据转换为numpy数组时,我遇到了内存问题。我有57GB内存,但内存很快就饱和了,内核会在np.array(processed_X)处重启。以下是我的代码:importnumpyasnp导入scipy.signalfromskimage.transformimportresizefromtqdmimporttqdmdefapply_stft(signal,n......
  • 【爬虫软件】用Python开发的小红书详情批量采集工具,含笔记正文、转评赞藏等
    一、背景介绍1.1爬取目标用python开发的爬虫采集软件,可自动按笔记链接抓取笔记的详情数据。为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python,无需改代码,双击打开即用!软件界面截图:爬取结果截图:结果截图1:结果截图2:结果截图3:以上。1.2......