python 类详解及简单实例
作者:root贵族 发布时间:2023-05-17 17:17:32
python 类详解
类
1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法)
2.Python类是可调用的对象,即类对象
3.类通常在模块的顶层进行定义,以便类实例能够在类所定义的源代码文件中的任何地方被创建。
4.实例初始化
instance = ClassName(args....)
类在实例化时可以使用__init__和__del__两个特殊的方法。
class ClassName(base):
'class documentation string' #类文档字符串
class suite #类体
base:超类是一个或多个用于继承的父类集合
类体可以包括:声明语句、类成员定义、数据属性、方法
如果类不存在继承关系,就不提供括号里的base
class FirstClass():
spam = 30 #类数据属性
def display(self): #类方法
print self.spam
x = FirstClass() #创建类实例
x.display() #方法调用
>>> 30
dir(FirstClass)
>>> ['__doc__', '__module__', 'display', 'spam']
class语句类似def,是可执行代码;直到运行class语句后,类才会创建
class语句内,任何赋值语句都会创建类属性
每个实例对象都会继承类的属性并获得自己的名称空间
Python类方法及调用
实例(对象)包含的属性
可调用的属性:方法
数据属性
在OOP中,实例就像是带有“数据”的记录,而类是处理这些记录的“程序”
通过实例调用方法相当于调用所属类的方法来处理当前实例。 比如之前的代码例子,x.display() 会被自动转换为 FirstClass.display(x),即调用类的方法来处理实例x
因此,类中每个方法必须有self参数,它隐含当前实例之意
在方法内对self属性做赋值运算会产生每个实例自己的属性
Python规定,没有实例,方法不允许被调用,这是‘绑定'(binding)的概念
class语句中的赋值语句会创建类属性,如前面例子的spam
在类方法中对传给方法的特殊参数self进行赋值会创建实例属性
Python构造器
创建实例时,Python会自动调用类中的__init__方法,以隐形的为实例提供属性
__init__方法被称为构造器
如果类中没有定义__init__方法,实例创建之初仅仅是一个简单的名称空间。
__init__的第一个参数一定是self ,self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self,但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。
__init__不能返回任何对象
析构函数:__del__
构造函数是必要的,而析构函数常常可以不考虑(Python解释器会自己回收)
class MyClass():
def __init__(self, name):
self.name = name
print 'My name is ' + self.name
def __del__(self):
print self.name + ' is dead.'
i1 = MyClass('Shaw')
>>> My name is Shaw
del i1
>>> Shaw id dead.
类的特殊属性
使用dir()或__dict__,查看类或实例的属性
__doc__:获取文档字符串
__base__:获取所有父类
__module__:类所在的模块
__name__:实例所属类的名字
Python类方法中可用的变量
实例变量:self.变量名
局部变量:方法内部创建的变量,可直接使用
静态变量:类中定义的变量。类名.变量名
全局变量:直接使用
继承
继承描述了基类的属性如何‘遗传'给派生类
子类可以继承他的基类的任何属性,包括数据属性和方法
一个未指定基类的类,其默认有一个叫object的基类
Python允许多重继承(可以继承多个父类)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://www.jianshu.com/p/3c958b309e1a


猜你喜欢
- 01 什么是pocPoC(全称: Proof of Concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序。和一些应用程
- 当我们利用html代码制作网页时,可以用以下方法进行python代码的调用:1.简单的python代码例如输出‘hell
- 下面写一个给大家做参考啊 create procedure sp_find(pfind varchar(500) BEGIN DECLAR
- 1、使用cmd打开命令行窗口。2、在输入python时,进入python交互模式。3、输入exit(),退出交互模式,在命令行模式下运行.p
- 0 引言前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己。
- Access允许您在数据库表中包含附件。通过利用微软的对象链接和嵌入(OLE)技术,您可以将照片、图表、文档及其他文件存储在您的Access
- 使用JS技术实现QQ阅读类似的点击展开、收起效果,具体内容如下一、定义展开函数showdiv(),实现点击"全文"按钮,
- 接触 Node.js 已有多年,一直喜欢它的单线程模型和异步IO特性,以及 JavaScript 语言本身的灵活性。同时,JavaScrip
- 前言首先来看一段代码x_list = [i for i in range(30)]y_list = [i for i in range(10
- 前言上篇我们介绍了微前端实现沙箱的几种方式,没看过的可以下看下JS沙箱这篇内容,扫盲一下。接下来我们通过源 码详细分析下qiankun沙箱实
- Pyinstaller这个库是我用pip下载的第一个模块。接下来通过本文给大家分享Python PyInstaller安装和使用教程,一起看
- 爬取”顶点小说网“《纯阳剑尊》代码import requestsfrom bs4 import BeautifulSoup# 反爬heade
- 一、软件测试大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件
- 目录1. DeepSource2. Codacy3. SonarQube4. Veracode5. Checkmarx6. Coverity
- 前言pandas对大数据有很多便捷的清洗用法,尤其针对缺失值和重复值。缺失值就不用说了,会影响计算,重复值有时候可能并未带来新的信息反而增加
- Dreamweaver MX 2004新增加了表格宽度辅助线功能,让我们在编辑网页表格的时候能清楚地看到表格中各单元的宽度以及变化,很直观。
- 前言上一篇文章中有同学提到路由鉴权,由于时间关系没有写,本文将针对这一特性对 vue 和 react 做专门说明,希望同学看了以后能够受益匪
- 一、前言当我们在django中添加或修改了数据库model后,一般需要执行makemigrations、migrate把我们的model类生
- 看此博客之前建议先看看B站的视频python数据结构与算法系列课程,该课程中未实现双向循环链表的操作,所以我按照该视频的链表思路实现了双向循
- 不加的话貌似只在ie6出现过问题。出现过:改变图片地址,结果图片不见了,加载样式,但样式文件没了。就像是中断了资源的下载一样,正确时解释是