Python中的类(一)
Python中的类(一)
一、 应用场景
如果多个函数中有一些相同的参数时,转换成面向对象。
二、 如何创建类
类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
Class 类名:
Pass
三、 类变量
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
四、 创建类中的方法
方法是类中定义的函数。
1、普通法
Obj = 类名 ()
Obj . 普通方法名
2、设定初始化(构造方法、封装特性)
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
注意:特殊方法“init”前后有两个下划线!!!
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。
五、继承特性
继承是为了使用父类中的方法。
创建实例:
class Father(): #父类
def f1(self):
print (‘父法一’)
class Son(Father): #子类
def s1(self):
print(‘子法一’)
调用:
- obj=Son()
 - obj.s1()
 - obj.f1()
 
#执行结果:子法一
父法一
当子类中的方法名和父类的方法名一致时(重写父类的某方法),调用该方法时,执行的是子类中的方法。重写时,还想要执行父类的方法时可以参照以下方法。
class Father(): #父类
def f1(self):
print (‘父法一’)
class Son(Father): #子类
def s1(self):
super(Son,self).f1 #参数:子类名,self
print(‘子法一’)
#调用
- obj=Son()
 - obj.s1()
 
#执行结果:父法一
子法一
也可以按照以下方法写:
class Father(): #父类
def f1(self):
print (‘父法一’)
class Son(Father): #子类
def s1(self):
Father.f1(self)
print(‘子法一’)
#调用
- obj=Son()
 - obj.s1()
 
多继承:
当需要一个子类继承多个父类时,可以参照以下代码:
class Father1(): #父类一
def f1(self):
print (‘父类一’)
class Father2(): #父类二
def f2(self):
print (‘父类二’)
class Son(Father1,Father2): #子类
def s1(self):
print(‘子法一’)
继承父类的顺序是从左到右继承。即,当继承的多个父类中有相同名称的方法,在调用时会执行左侧父类的方法,而右侧父类的方法则不会执行。这与执行顺序有关。当调用子类时,程序会先从子类的方法中匹配,如果子类中没有则去符类中依次匹配,父类的匹配顺序是从左到右。
当多父类继承共同继承一个祖先类,而调用的方法在祖先类时,的查找调用顺序如下图。

当调用父类的方法中又调用了其他方法,则会从子类开始匹配查找该方法。即使,原先的父类中有该方法,也会从子类查找。
Python中的类(一)的更多相关文章
- Python中的类、对象、继承
		
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
 - python中的类和实例
		
今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...
 - 4、Python中的类详解(0601)
		
<大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...
 - Python中的类(上)
		
在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. 例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__&quo ...
 - python中新式类和经典类
		
python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...
 - python中的类(二)
		
python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...
 - 关于Python中的类普通继承与super函数继承
		
关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...
 - python中的类与继承
		
Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...
 - GO-结构体(类似python中的类)
		
一.结构体有名属性 package main import "fmt" func main(){ type Sb struct { name string //属性名,数据类型 a ...
 
随机推荐
- Virtualbox/Vagrant安装
			
它们分别是什么? VirtualBox: 号称是最强的免费虚拟机软件和VM类似. 不仅具有丰富的特色,而且性能也很优异. Vagrant: 是一个基于Ruby的工具,用于创建和部署虚拟化开发环境. 使 ...
 - VS中自定义C#快速简写代码
			
首先在VS中找到工具——代码片段管理器——语言选择(CSharp)——Visual C#——赋值路径——根据路径找到对应的代码片段用VS打开 修改: Title——标题 ShortCut——缩写 D ...
 - wpf 窗口最小化后,触发某事件弹出最小化窗口并置顶
			
//如果窗口最小化了弹出并置顶----事件触发调用 ShowWindowAsync(new System.Windows.Interop.WindowInteropHelper(CommonHelpe ...
 - GridFS使用及配合nginx实现文件服务
			
Mongodb下GridFS使用及配合nginx实现文件服务 一.GridFS简介 GridFS是mongodb下用来存储文件的一种规范,所有官方支持的驱动均实现了GridFS规范. Mongodb本 ...
 - C++类数组的实现
			
请看下面的代码: //xy_3_1 2013/10/26 #include<stdio.h> #include<iostream.h> #include<string.h ...
 - Vue学习笔记:编译过程
			
碰到是否有template选项时,会询问是否要对template进行编译: 在template编译(渲染成UI)有一个过程.模板通过编译生成AST,再由AST生成Vue的渲染函数,渲染函数结合数据生成 ...
 - Docker学习(二): 镜像的使用与构建
			
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
 - layui——上传图片,并实现放大预览
			
一般上传文件后会返回文件的路径,然后存储到数据库,那么首先实现上传后的放大和删除功能 function uploadSmallPic() { var upload = layui.upload; up ...
 - mybatis问题: There is no getter for property named 'equipmentId' in 'class java.lang.String'
			
本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...
 - 关于VUE中 import 、 export 和 export default 的注意问题
			
1.import引入一个依赖包,不需要相对路径.import 引入一个自己写的js文件,是需要相对路径的. 示例:import axios from ‘axios’; import AppServic ...