首页 > 编程语言 >Python_11 类的方法

Python_11 类的方法

时间:2023-04-24 22:23:10浏览次数:36  
标签:11 初始化 Python 子类 self 实例 父类 方法

一、查缺补漏

1. 实例方法必须用类实例化对象()来调用,用类来调用时会执行,但是self中不是实例化类地址而是传的字符串

二、类中的方法

1. 实例方法

1. 定义在类里面的普通方法(函数)

2. 第一个参数必须是类实例,在方法调用的时候会自动传递,这个参数名称可以随便定义默认self

3. 类内部:self.方法名称()

4. 类外部:实例.方法名称()

2. 类方法

1. 定义在类中,通过@classmethod修饰的普通方法就叫类方法

2. 第一个参数为当前类,这个参数的名称可以随便定义默认使用cls定义,但是用self调用

3. 类内部:self.方法名称()

4. 类外部:类.方法名称()  和类实例.方法名称()

3. 静态方法(不需要传任何参数,自己可以定义参数不用写self参数,其他和类方法一致)

1. 定义在类中,通过@staticmethod修饰的普通方法就叫静态方法

2. 默认无需传任何参数

3. 类内部:self.方法名称()

4. 类外部:类.方法名称()

4. 私有方法 (私有的函数体)

1. 双下划线开头的方法就叫私有方法

2. 传参无区别和普通方法一致

3. 类内部:self._ _方法名()

4. 类外部:不允许访问,可以强行访问,但是最好不用

5. _函数名,_ _函数名_ _方法和属性,就算不是私有的也不要在外部去访问,可能是开发预留之后要用到的

5. 总结

1. 实例方法:一般要实现某些功能用实例方法,常用

2. 类方法:类没有初始化方法,也不需要初始化的时候传任何参数进来,只传self,不想去实例化类时候用

3. 静态方法:类没有初始化方法,也不需要初始化的时候传任何参数进来,不用传self,也不用去实例化类

4. 类方法和静态方法的使用一般是在需要运算出结果时但又不需要实例化类时使用

5. 私有方法:在类的内部使用,不希望被外部使用,类里面某些方法的辅助方法,用于封装

三、类的特性:继承、封装、多态   所有类统一都继承的类叫基类object,默认继承

1. 一些概念:

1. 什么继承:子类继承父类,就能直接使用父类的属性和方法(私有属性和方法除外)   继承过来之后就可以访问属性

2. 什么是封装:隐藏实现细节,只对外提供某些功能

3. 什么是多态:还没讲

2. 单继承--自动化不用

1. 写法:class  新函数名(要继承的函数名)

     2. 初始化子类:初始化之后会自动去调用初始化方法,如果子类没有初始化方法,会去父类找初始化方法去执行

子类有先用子类的,没有用父亲的

 3. 子类调用自己的方法:子类和父类有同名的方法和属性,优先使用子类自己的方法和属性

子类没有实现某个方法,他会去父类找,找到了就执行父类的方法

查找顺序:调用时先找子类之后找父类

  4. 子类直接调用父类的方法  super().父类方法名()     子类和父类都有但是想用父类的

查找顺序:图1先查找父类,在执行子类;图2只查找父类,父类中没有的会报错

普通方法、初始化方法(__init__)有区别在多继承时,单继承无区别

父类名称().__init__()    多继承会导致重复支持父类的初始化方法,单继承也会调用两次

super().__init()    调用父类方法推荐使用

5. 继承的使用场景

1. 拓展父类的功能在父类和子类同名方法时

    2. 重写父类【父类和子类同名方法】 

6. 需要使用父类方法,避免重实现

7. 继承之后对父类方法的修改原则

1. 父类已经实现的功能,不要去修改父类的方法【不要做】

2. 如果需要你可以对父类方法进行功能拓展【可以做】

标签:11,初始化,Python,子类,self,实例,父类,方法
From: https://www.cnblogs.com/Alisa-sweet/p/17351158.html

相关文章

  • Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型|附代
    原文链接:http://tecdat.cn/?p=27058最近我们被客户要求撰写关于因果推断与增量的研究报告,包括一些图形和统计输出。使用ML进行提升建模和因果推理Python包提供了一套使用基于最近研究的机器学习算法的提升建模和因果推理方法。允许用户根据实验或观察数据估计条件平均处理效......
  • python3.10升级pip命令-国内镜像源
    国内镜像源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplesome-packagepython3.10升级pip命令python.exe-mpipinstall--upgradepip安装pipinstallpip-review查看可更新pip-review批量自动更新pip-review--auto......
  • 1163. 按字典序排在最后的子串
    题目链接:1163.按字典序排在最后的子串方法:双指针解题思路【正常走路我不走,就是跳,就是玩】任何非后缀子串字典序都小于其相应的后缀子串,如\(s[i,i+k]<s[i,n-1]\),\(k<n-1\),故答案一定为后缀子串,即\(s[i,n-1]\);观察数据规模,\(4*10^5\),暴力一定超时;法宝:......
  • Python中的哈希表
    哈希表是一种常用的数据结构,广泛应用于字典、散列表等场合。它能够在O(1)时间内进行查找、插入和删除操作,因此被广泛应用于各种算法和软件系统中。哈希表的实现基于哈希函数,将给定的输入映射到一个固定大小的表格中,每个表项存储一个关键字/值对。哈希函数是一个将任意长度的输入映......
  • Python学习——Day4
    一、嵌套if·语法结构:if条件表达式1:  if内层条件表达式:   内存条件执行体1  else:   内存条件执行体2else: 条件执行体answer=input('您是会员吗?y/n')money=float(input('请输入您的购物金额:'))ifanswer=='y':ifmoney>=200:print('打8折,......
  • MySQL 错误1418 的解决方法
    使用mysql创建、调用存储过程,函数以及触发器的时候会有错误符号为1418错误。mysql开启了bin-log,我们就必须指定我们的函数是否是哪种类型:1DETERMINISTIC不确定的2NOSQL没有SQl语句,当然也不会修改数据3READSSQLDATA只是读取数据,当然也不会修改数据4MODIFIESSQLD......
  • flux 使用方法
    InfluxQLSHOWTAGVALUESWITHKEY="host"Fluxfrom(bucket:"geth")|>range(start:v.timeRangeStart)|>keyValues(keyColumns:["host"])|>keep(columns:["host"])|>distinct(column:"host&quo......
  • python-高频面试题
    面试题汇总1.生成器使用了yield关键字的函数称为生成器,生成器是一个自定义的迭代器。函数中有yield关键字时,函数名加()不会执行函数体代码,而是会生成一个生成器。生成器内只有__iter__和__next__方法。生成器对比return可以返回多次值,可以挂起保存函数的运行状态,而遇到return就......
  • Java-基础篇【数组、方法、面向对象基础.】
    1:数组引用类型,不是基本数据类型2:静态初始化数组111 ......
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback
    尝试捕获异常回忆上次内容变量相加整型数字变量可以相加字符串变量也可以拼接但是字符串和整型数字整型数字和字符串不能相加怎么办?转格式int("1")str(2)可是如果输入的苹果数量是字符串"abc"int("abc")会发生什么??......