python 面向对象,,类和对象面向过程和面


类和对象


面向过程和面向对象的编程

面向过程的编程:函数式编程,c程序等

面向对象的编程:c++,JAVA ,python等

类和对象:是面向对象中的两个重要概念

类:是对事物的抽象,比如:汽车模型(某一类事物的描述,属性和方法)

对象:是类的一个实例,比如:qq轿车,大客车

范例说明:

汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化为一台真实的汽车体现出来


Python类的定义:


python类的定义:

使用class关键字定义一个类,并且类名的首字母要大写;

当程序员需要创建的类型不能用简单类型表示时就需要创建类;

类把需要的变量和函数组合在一起, 这种包含称之为“封装”;

python类的结构:

>>>class 类名:

...成员变量

...成员函数

...

类的创建:范例

#!/usr/bin/python#coding:utf8classRen:#class关键字,类别首字母大写name="人"#属性high="一人高"#属性wight="一人重"#属性defrun(self):#成员函数定义方法;print"跑步"
#注意类当中定义成员函数时和外边定义函数时有区别,里边必须有一个形参,用来传递类当中的属性和方法,但调用的时候是不需要传参的

对象的创建:

创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。

句柄用于区分不同的对象;

对象的属性和方法与类中的成员变量和成员函数对应

#!/usr/bin/python#coding:utf8classRen:name=‘人‘high=‘一人高‘wight=‘一人重‘defrun(self):#self表示自己的类别print‘跑步‘zhangsan=Ren()#从Ren的类别中实例化一个对象printzhangsan
[root@zabbixclass]#pythonclass.py<__main__.Reninstanceat0x7ff7f80110e0>#instance实例#列别中的实例(对象)#对象zhangsan具有属性和方法,zhangsan的属性就是类别中Ren的成员变量,方法就是类别中的函数

#属性的访问 (通过对象.)

.....printzhangsan.high[root@zabbixclass]#pythonclass.py一人高

#对象属性的重新赋值

.......zhangsan.name="张三"printzhangsan.name[root@zabbixclass]#pythonclass.py张三

#注意:对象是从类别中实例化出来的,它具有类别的属性和方法,同时对象也是一个个体.

zhangsan.money="10000"printzhangsan.money[root@zabbixclass]#pythonclass.py10000

Python对象的体系结构:

-经典对象:内部由属性和方法组成,属性可以是数据类型也可以是函数类型。

如果属性为函数则该属性就是一个方法。

-新型对象-定义新型对象,必须继承object方法class_name(object)

新型对象提供了对类方法和静态方法的支持

....classRen(object):

类的属性:

类有属性和方法组成,类的属性是对数据的封装,类的方法则是对类的行为的封装。类的属性按使用范围分为私有属性和公有属性,类的属性范围取决于属性的名称

公有属性:所谓共有属性就是在类中和类外调用的属性

#!/usr/bin/python#coding:utf8classRen(object):name=‘人‘high=‘一人高‘wight=‘一人重‘defrun(self):printself.name#调用内部属性,self代表本身,访问自己,调用类的属性print‘跑步‘if__name__==‘__main__‘:zhangsan=Ren()zhangsan.name="张三"printzhangsan.name#外部访问zhangsan.run()printRen.name#通过类名访问属性


私有属性:不能被类以外的函数调用

#!/usr/bin/python#coding:utf8classRen(object):name=‘人‘high=‘一人高‘wight=‘一人重‘__money=‘1000‘defrun(self):printself.nameprint‘跑步‘if__name__==‘__main__‘:zhangsan=Ren()zhangsan.name="张三"printzhangsan.__money[root@zabbixclass]#pythonclass.pyTraceback(mostrecentcalllast):File"class.py",line15,in<module>printzhangsan.__moneyAttributeError:‘Ren‘objecthasnoattribute‘__money‘#无法调用
#!/usr/bin/python#coding:utf8classRen(object):name=‘人‘high=‘一人高‘wight=‘一人重‘__money=‘1000‘defrun(self):printself.nameprint‘跑步‘defsay(self):#内部方法中调用printself.__moneyif__name__==‘__main__‘:zhangsan=Ren()zhangsan.name="张三"printzhangsan.say()#通过内部调用方法显示,实现对数据的封装、隐藏

(可以通过instance._classname_attribute方式访问,但只用于调式程序)

printzhangsan._Ren__money

定义方式:以“__”双下划线开始的成员变量就是私有属性,否则就是公有属性

内置属性:有系统在定义类的时候默认添加的,由前后两个下划线构成__dict__,__module__

......printRen.__dict__[root@zabbixclass]#pythonclass.py人##################################################{‘high‘:‘\xe4\xb8\x80\xe4\xba\xba\xe9\xab\x98‘,‘__module__‘:‘__main__‘,‘run‘:<functionrunat0x7f9ebdb60230>,‘name‘:‘\xe4\xba\xba‘,‘__dict__‘:<attribute‘__dict__‘of‘Ren‘objects>,‘__weakref__‘:<attribute‘__weakref__‘of‘Ren‘objects>,‘__doc__‘:None,‘wight‘:‘\xe4\xb8\x80\xe4\xba\xba\xe9\x87\x8d‘,‘say‘:<functionsayat0x7f9ebdb608c0>,‘_Ren__money‘:‘1000‘}





本文出自 “思想大于技术” 博客,谢绝转载!

python 面向对象

评论关闭