首页 / PYTHON / python 面向对象
python 面向对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 面向对象 ,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3386字,纯文字阅读大概需要5分钟。
内容图文
类和对象
面向过程和面向对象的编程
面向过程的编程:函数式编程,c程序等
面向对象的编程:c++,JAVA ,python等
类和对象:是面向对象中的两个重要概念
类:是对事物的抽象,比如:汽车模型(某一类事物的描述,属性和方法)
对象:是类的一个实例,比如:qq轿车,大客车
范例说明:
汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化为一台真实的汽车体现出来
Python类的定义:
python类的定义:
使用class关键字定义一个类,并且类名的首字母要大写;
当程序员需要创建的类型不能用简单类型表示时就需要创建类;
类把需要的变量和函数组合在一起, 这种包含称之为“封装”;
python类的结构:
>>>class 类名:
... 成员变量
... 成员函数
...
类的创建:范例
#!/usr/bin/python #coding:utf8 class Ren: #class关键字,类别首字母大写 name = "人" #属性 high = "一人高" #属性 wight = "一人重" #属性 def run(self): #成员函数定义方法; print "跑步"
#注意类当中定义成员函数时和外边定义函数时有区别,里边必须有一个形参,用来传递类当中的属性和方法,但调用的时候是不需要传参的
对象的创建:
创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
句柄用于区分不同的对象;
对象的属性和方法与类中的成员变量和成员函数对应
#!/usr/bin/python #coding:utf8 class Ren: name = ‘人‘ high = ‘一人高‘ wight = ‘一人重‘ def run(self): #self 表示自己的类别 print ‘跑步‘ zhangsan = Ren() #从Ren 的类别中实例化一个对象 print zhangsan
[root@zabbix class]# python class.py <__main__.Ren instance at 0x7ff7f80110e0> #instance 实例 #列别中的实例(对象) #对象zhangsan具有属性和方法,zhangsan的属性就是类别中Ren的成员变量,方法就是类别中的函数
#属性的访问 (通过对象.)
..... print zhangsan.high [root@zabbix class]# python class.py 一人高
#对象属性的重新赋值
....... zhangsan.name = "张三" print zhangsan.name [root@zabbix class]# python class.py 张三
#注意:对象是从类别中实例化出来的,它具有类别的属性和方法,同时对象也是一个个体.
zhangsan.money = "10000" print zhangsan.money [root@zabbix class]# python class.py 10000
Python对象的体系结构:
-经典对象:内部由属性和方法组成,属性可以是数据类型也可以是函数类型。
如果属性为函数则该属性就是一个方法。
-新型对象-定义新型对象,必须继承object方法class_name(object)
新型对象提供了对类方法和静态方法的支持
.... class Ren(object):
类的属性:
类有属性和方法组成,类的属性是对数据的封装,类的方法则是对类的行为的封装。类的属性按使用范围分为私有属性和公有属性,类的属性范围取决于属性的名称
公有属性:所谓共有属性就是在类中和类外调用的属性
#!/usr/bin/python #coding:utf8 class Ren(object): name = ‘人‘ high = ‘一人高‘ wight = ‘一人重‘ def run(self): print self.name #调用内部属性,self代表本身,访问自己,调用类的属性 print ‘跑步‘ if __name__ == ‘__main__‘: zhangsan = Ren() zhangsan.name = "张三" print zhangsan.name #外部访问 zhangsan.run() print Ren.name #通过类名访问属性
私有属性:不能被类以外的函数调用
#!/usr/bin/python #coding:utf8 class Ren(object): name = ‘人‘ high = ‘一人高‘ wight = ‘一人重‘ __money = ‘1000‘ def run(self): print self.name print ‘跑步‘ if __name__ == ‘__main__‘: zhangsan = Ren() zhangsan.name = "张三" print zhangsan.__money [root@zabbix class]# python class.py Traceback (most recent call last): File "class.py", line 15, in <module> print zhangsan.__money AttributeError: ‘Ren‘ object has no attribute ‘__money‘ #无法调用
#!/usr/bin/python #coding:utf8 class Ren(object): name = ‘人‘ high = ‘一人高‘ wight = ‘一人重‘ __money = ‘1000‘ def run(self): print self.name print ‘跑步‘ def say(self): #内部方法中调用 print self.__money if __name__ == ‘__main__‘: zhangsan = Ren() zhangsan.name = "张三" print zhangsan.say() #通过内部调用方法显示,实现对数据的封装、隐藏
(可以通过instance._classname_attribute方式访问,但只用于调式程序)
print zhangsan._Ren__money
定义方式:以“__”双下划线开始的成员变量就是私有属性,否则就是公有属性
内置属性:有系统在定义类的时候默认添加的,由前后两个下划线构成__dict__,__module__
...... print Ren.__dict__ [root@zabbix class]# python class.py 人 ################################################## {‘high‘: ‘\xe4\xb8\x80\xe4\xba\xba\xe9\xab\x98‘, ‘__module__‘: ‘__main__‘, ‘run‘: <function run at 0x7f9ebdb60230>, ‘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‘: <function say at 0x7f9ebdb608c0>, ‘_Ren__money‘: ‘1000‘}
本文出自 “思想大于技术” 博客,谢绝转载!
原文:http://linuxboys.blog.51cto.com/9150052/1662343
内容总结
以上是互联网集市为您收集整理的python 面向对象 全部内容,希望文章能够帮你解决python 面向对象 所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。