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允许多重继承(可以继承多个父类)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月14日
2024年11月14日
- LOLtoc9魔法口令在哪可以找到 2024云顶之弈toc观赛魔法口令兑换码
- 黑鸭子2008《影视经典·珍藏版》试音碟[WAV+CUE]
- 碧娜《温柔吻语2》[WAV+CUE]
- Stravinsky-Symphonies,Volume1-OrquestaSinfonicadeGalicia,DimaSlobodeniouk(2024)[24-
- 外媒评Switch2:向下兼容是关键 但挑战依然存在
- 任天堂提醒:宠物的尿或唾液或会让NS故障 把它放好!
- 《博德3》再创新高 Steam掌机总游玩时长近2000年
- 张玮伽《想你的夜DSD》东升 [WAV+CUE][1G]
- 姚璎格《 粤 24KGOLD》正版低速原抓[WAV+CUE][1G]
- 杨千嬅《如果大家都拥有海》寰亚 [WAV+CUE][998M]
- 孟庭苇.1994-1990-1994钻石精选集2CD(2022环球XRCD限量版)【上华】【WAV+CUE】
- 群星.1998-华纳好情歌精选17首【华纳】【WAV+CUE】
- 张敬轩王菀之.2006-903.ID.CLUB拉阔演奏厅LIVE.2CD【环球】【WAV+CUE】
- 《欢欣森活》存档方法
- 《炉石传说》2024新赛季上线更新内容问题汇总