【python】学习记录

Basic

面向对象编程

  • 命名方法:Pascal 首字母大写

定义属性:对象有什么性质

  1. class UAV:
        def __init__(self,id,color):  #构造函数
            self.id = id
            self.color = color
            self.type = "Quadrotor"
    
  2. 类实例化

    F1 = UAV(1,'red') #调用init创新新对象,将对应属性赋值
    print(f"无人机的id为{F1.id},颜色是{F1.color},飞机模型为{F1.type}")
    

    输出: 无人机的id为1,颜色是red,飞机模型为Quadrotor

定义方法:对象能做什么事情

  1. class UAV:
        def __init__(self,id,color):  #构造函数
            self.id = id
            self.color = color
            
    	def takeoff(self,height,duration):   #类里定义的函数-->方法
            print(f"{self.id}号无人机起飞!高度为{height},起飞时间为{duration}")
    
  2. 调用类方法

    F1 = UAV(1,'red') 
    F1.takeoff(2,2)
    

    输出:1号无人机起飞!高度为2,起飞时间为2

类继承:DRY原则-Don’t Repeat Yourself

  1. class UAV:
        def __init__(self,id):  
            self.id = id
            
    	def takeoff(self,height,duration):  
            print(f"{self.id}号无人机起飞!高度为{height},起飞时间为{duration}")
            
    class Helicopter(UAV):
        def __init__(self,id):
            super().__init__(id)  #调用父类的构造函数,使其具有父类中定义的属性
            self.rotor = 1
        
    	def takeoff(self,height,duration):   
            print(f"{self.id}号直升机起飞!高度为{height},起飞时间为{duration}")
            
    class Quadrotor(UAV):
        def __init__(self,id):
            super().__init__(id)   #调用父类的构造函数,使其具有父类中定义的属性
            self.rotor = 4
        
    	def takeoff(self,height,duration):   
            print(f"{self.id}号四旋翼起飞!高度为{height},起飞时间为{duration}")
    
  2. 调用

    F1 = Quadrotor(1)
    F2 = Helicopter(2)
    F1.takeoff(2,2)
    F2.takeoff(4,2)
    

    输出:1号四旋翼起飞!高度为2,起飞时间为2

    2号直升机起飞!高度为4,起飞时间为2

    调用逻辑:先查找自己类(Quadrotor)里有没有takeoff方法,若没有,则使用父类中的takeoff方法(同名)

  3. 什么时候用继承?

    “A是B”时,可以写成classA(B)

文件

读取文件

  1. f = open("./data.txt","r",encoding="utf-8")  #相对路径,读取文件,编码方式为utf-8
    print(f.read())
    f.close
    
  2. with open("./data.txt") as f:
        print(f.read)  #无需单独调用close文件f来释放资源
    
  3. 读写的三种方式:

    • read:一次性读取文件中的所有内容(字符串)

      f.read(10) 会读1-10字节的文件内容,之后会从11字节开始读

    • readline:读取文件的一行

      line = f.readline()
      while line != "":
          print(line)
          line = f.readline()   #读取下一行
      
    • readlines:读取文件所有行,按行组成列表

      lines = f.readlines()
      for line in lines:
          print(line)
      

Advanced

assert

  • 程序能够在我的假设条件(assert)下良好的运行,相当于一个if语句

  • 当表达式为真时,正常执行;为假时,抛出异常错误AssertionError:这里是异常,我们可以自己写报错的内容

    def  zero(s):
        a = int(s)
        assert a > 0,"a超出范围"   #这句的意思:如果a确实大于0,程序正常往下运行
        return a
    
    zero("-2")  #但是如果a是小于0的,程序会抛出AssertionError错误,报错为参数内容“a超出范围”`
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值