全面了解python中的类,对象,方法,属性


Posted in Python onSeptember 11, 2016

python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象。。。。。。

我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。

我们在描述一个真实对象(物体)时包括两个方面:

它可以做什么(行为)

它是什么样的(属性或特征)。

python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method

结论:对象=属性+方法

python中,把具有相同属性和方法的对象归为一个类(class

比如人类,动物,植物等等,这些都是类的概念。

类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。

>>> class people: 

...   def speak(self): 

...       print ("hello!") 

...

'''

定义一个people类,定义一个speak方法,但没有定义属性,

因为属性不属于类,而是属于各个类的实例。也就是说属于对象。

因此我们可以给每个实例设置不同的属性

'''  
>>> class people:          #类  
...   def speak(self):      #方法        
...       print ("hello!")        
... 
>>> 

>>> jack = people()  #创建jack实例
>>> tom = people()  #创建tom实例
>>> import tab    #导入table键功能模块
>>> jack.      #输入jack.,可以看到以下方法
jack.__class__  jack.__doc__   jack.__module__ jack.speak(   
>>> jack.speak()  #引用speak方法
hello!

>>> jack.age=39      #添加age属性
>>> jack.height=120    #添加height属性
>>> jack.
jack.__class__  jack.__module__ jack.height   
jack.__doc__   jack.age     jack.speak(   
>>> jack.height
120
>>> jack.age
39

'''

#初始化对象

创建类时,可以定义一个特定的方法,名为__init__(),只要创建这个类的一个实例

就会运行这个方法。可以向__init__()方法传递参数,

这样创建对象时就可以把属性设置为你希望的值

__init__()这个方法会在创建对象时完成初始化,

'''
>>> class peo:
...   def __init__(self,name,age,sex):
...       self.Name = name
...       self.Age = age
...       self.Sex = sex
...   def speak(self):
...       print "my name" + self.Name
... 
>>> 

实例化这个类的对象时:
>>> zhangsan=peo("zhangsan",24,'man')
>>> print zhangsan.Age
24
>>> print zhangsan.Name
zhangsan
>>> print zhangsan.Sex
man

# ----------
>>> print zhangsan
<__main__.peo instance at 0x7fe5041ec248>
'''

要让print能打印出来,就得使用__str__方法

__str__()这个方法告诉python在打印(print)一个对象时,具体显示什么内容

'''
#! /usr/bin/python
class peo:
  def __init__(self,name,age,sex):
    self.Name = name
    self.Age = age
    self.Sex = sex
  def speak(self):
    print "my name" + self.Name
  def __str__(self):
    msg='my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex
    # msg='my name is: ' +self.Name+ ","+ "my age is: " + str(self.Age) +','+ "my sex is:" +self.Sex
    return msg
shanghai=peo('shanghai','23','man')
# shanghai=peo('shanghai',23,'man')
'''
msg='my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex

此处23是年龄,但被转成了字符串,因为self.Age定义的是字符串

如果不将23转义,则会报错

如果希望在程序中就事先转义,需要使用str(self.Age)

'''
print shanghai

'''
之前多次用到self这个形参
类就好比是一张蓝图,使用一个类可以创建多个对象实例,
speak()方法在被调用时,必须知道是哪个对象调用了它.

这里self参数就会告诉方法是哪个对象来调用的.这称为实例引用。
zhangsan。speak()就好比写成了peo.speak(zhangsan)
'''

以上这篇全面了解python中的类,对象,方法,属性就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中处理字符串之isalpha()方法的使用
May 18 Python
python决策树之C4.5算法详解
Dec 20 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
Python subprocess库的使用详解
Oct 26 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
django admin组件使用方法详解
Jul 19 Python
Python 过滤错误log并导出的实例
Dec 26 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
Python读取图片属性信息的实现方法
Sep 11 #Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 #Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 #Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 #Python
Python中使用asyncio 封装文件读写
Sep 11 #Python
Python 如何访问外围作用域中的变量
Sep 11 #Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 #Python
You might like
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP crc32()函数讲解
2019/02/14 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
javascript常用函数(1)
2015/11/04 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
UNIX文件系统常用命令
2012/05/25 面试题
家长会学生家长演讲稿
2013/12/29 职场文书
五年级英语教学反思
2014/01/31 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
爱护公物标语
2014/06/24 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js