Python_11 类的方法
一、查缺补漏
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. 如果需要你可以对父类方法进行功能拓展【可以做】
Python_11 类的方法的更多相关文章
- Android随笔之——Android时间、日期相关类和方法
今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- python学习道路(day8note)(抽象类,类的方法,异常处理,socket编程)
1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(2 ...
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- RBAC类的方法
rbac类的 方法 authenticate($map,$model='')方法 传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息 saveAccessList($authId=null ...
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...
- C#可扩展编程之MEF学习笔记(三):导出类的方法和属性
前面说完了导入和导出的几种方法,如果大家细心的话会注意到前面我们导出的都是类,那么方法和属性能不能导出呢???答案是肯定的,下面就来说下MEF是如何导出方法和属性的. 还是前面的代码,第二篇中已经提供 ...
- 深入.net(类及方法)
.net 的命名规则: 帕斯卡命名法 ----- 多个单词说明,且直接连接,并首字母大写(类名.方法名.属性名....) 骆驼命名法---------多个单词说明,且直接连接,并首字母大写,第一个字母 ...
- PHP加载另一个文件类的方法
加载另一个文件类的方法 当前文件下有a.php 和b.php,想要在class b中引入class a <?php class a { public $name = ' ...
随机推荐
- vue项目部署后页面加载首次很慢的优化方案
参考: vue项目首次加载特别慢需要怎么配置? 1.看看你的依赖包是不是全局引入的,改为组件内按需引入,可大大降低加载时长.或者将组件引入方式改为cdn引入.需要注意的是,两种引入方式不能共存. 2. ...
- JQUERY选择器大全(转载)
在Web应用程序中,大部分的客户端操作都是基于对象的操作,要操作对象就必须先获取对象,jQuery提供了强大的选择器让我们获取对象.我人为地将jQuery选择器分为两大部分:选择对象和筛选条件.选择对 ...
- spring-boot项目布到tomcat容器下部署
一.修改打包形式 在pom.xml里设置 `war` <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring- ...
- GreenPlum tidb 性能比较
主要的需求 针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用 数据可以实时的写入和查询,并发的tps不是很高 建立数据仓库,模式上主要采用星星模型.雪花模型,或者宽表 ...
- git的回退以及合并,删除什么的
有时候不小心合并了别的分支中的commit.我们需要回退某些提交记录.可以通过reset来操作,reset 会回退到指定commit.这种方式会删除记录,我们最好使用revert命令来操作 git r ...
- FTP文件夹错误:【打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹】
资源管理器访问FTP服务器报错,提示FTP文件夹错误:[打开FTP服务器上的文件夹时发生错误.请检查是否有权限访问该文件夹]. 详细信息: 200 Switching to ASCII mode. 2 ...
- 解决VUE中document.documentElement.scrollTop为0(转)
原文地址:https://blog.csdn.net/WDCCSDN/article/details/82107374 Vue中document.documentElement.scrollTop的值 ...
- mysql-开启日志记录功能
开启日志记录功能 -- 开启功能 SET GLOBAL general_log = ON; -- 保存到文件 SET GLOBAL log_output = 'file'; 查看日志内容 -- 查看日 ...
- Vue 的下拉刷新指令
loadmore: { //自定义指令: 下拉加载 bind(el, binding) { let p = 0; let t = 0; let down = true; el.addEventList ...
- angularJS:一个页面多个ng-app
var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $rootScope) { $scop ...