包虫病

注册

 

发新话题 回复该主题

Python中的类class1 [复制链接]

1#
Python中的类(class)(1)前言

类(class)是python中很重要的一个概念,也是我们面象对象编程中最重要的概念主之一如何去理解类,就像如何去理解函数(方法)一样,首先要有一颗常态的心,不要因为新名词,新事物,而自乱阵脚.然后,尽量用类比的方法去学习一个新事物,会让你更容易理解.

这里简单的说明一下本人对类的理解从使用角度讲,类是一个有特点的功能集成者.即当我们说到一个类的时候,

通常会去了解这个类能做什么事情.比如,我们Pygame中的矩形(Rect)就是一个类,它可以移动.

这个类有什么特点(属性)

从程序设计角度讲,类的组织是为了更好的重用代码,更好的组织代码,以及本质是一个数据类型.

本节提要内容详情类的声明p>classMyClass(object):  pass

class:是一个关键字,就像定义函数时用的def一样,说明我们要定义的是一个类MyClass:我们设计的类的类名.就像我们所有的地球人,统称"人"一样,对一个类型的统称参数object:父类

类的构函数

classMyClass(object):  def__init__(self,args):    pass

init(self,args)这个函数称为类的构造函数用来对类进行一些初始化的操作

这个函数在类进行实例化的时候自动调用实例/p>

classMyClass(object)ef__init__(self,text):print(text)mc=MyClass("我是在初始化的时候打印的")#类的实例化

可以看到,当我们实例话的时候,会自动调用__init__()函数名词:类中的函数,通常称为类的方法注意:构造函数中,函数名是固定的,第一个参数self也是固定的.如果没有self这个参数,构造函数会出错看以下实例

classMyClass2(object)ef__init__(text):print(text)mc=MyClass2("我是在初始化的时候打印的")

效果图总结:构造函数/p>

函数名:init()

第一个参数self固定的

类的方法

类的实例方法要点/p>

定义在类内部的函数

第一个参数必须是self

使用时,实例名.方法名()

#类的方法示例classMyClass3(object)构造函数def__init__(self,text):print("我是构造方法"+text)#类的方法:move()defmove(self):print("我移动了")mc4=MyClass3("mc4")mc4.move()#调用类的move()方法

类的静态方法:当我们希望一个类,不实例化也能调用类的某个方法时,这个方法应该被定义成静态方法

方法定义前加下

staticmethod修饰

方法的参数没有self

调用时直接用类名.方法名()来使用

classMyClass5(object)构造函数def__init__(self,text):print("我是构造方法"+text)#类的静态方法,可以实例化直接调用

staticmethoddefdd():print("所有实例共有方法")MyClass5.dd()类的属性

第一种:实例属性要点/p>

定义在构造函数/类的方法内

在类的定义中用self.属性名来使用

实例化类后用实全例名.属性名来访问或者修改第二种:类的属性要点:

定义在方法外

在类的定义中用类名.属性名来使用

类的属性被所有类的实例所共有(改变一次类属性,其他的实例的类属性也会变)

可以直接使用类名.属性名来使用

当类的属性被实例单独改变时,这个属性会与实例绑定,不再受类.属性名改变而改变

#类的属性示例classMyClass6(object):weight=#类属性def__init__(self,name,age):self.name=name#实例属性nameself.age=age#实例属性ageprint(MyClass6.weight)#打印类属性mc6_1=MyClass6("mc6_1",12)#实例化类print(mc6_1.name,mc6_1.age)#访问实例化属性#改变类属性与实例化属性MyClass6.weight=#我又重了mc6_1.name="mc6_1改名了"mc6_1.age=11#我变年轻了print(MyClass6.weight)print(mc6_1.name,mc6_1.age)#访问实例化属性mc6_2=MyClass6("mc6_2",20)print(mc6_2.weight)mc6_2.weight=#改变了实例的类属性print(mc6_1.weight)print(mc6_2.weight)MyClass6.weight=#再改类属性print(mc6_1.weight)print(mc6_2.weight)#该实例的此类属性不会再随着类名.属性名的操作方法改变而改变了后记

类的内容还有很多,这里简单的介绍了类的基本内容:

类的定义方法

类的构造函数

类的方法

类的属性

这几天在折腾电脑,给自己的电脑装了个黑苹果系统.由于无线网卡驱动问题,导致黑苹果系统还无法正式投入使用.明天网卡就能到了,到时候用黑苹果感受一下写代码的感觉是不是比win好点.

今天更新的内容有点少,但是内容的深度比较大,需要慢慢来体会

预览时标签不可点收录于话题#个上一篇下一篇
分享 转发
TOP
发新话题 回复该主题