python基础教程之对象和类的实际运用


Posted in Python onAugust 29, 2014

我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。

调用类的其它信息

上一讲中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性。

class Human(object):

    laugh = 'hahahaha'

    def show_laugh(self):

        print self.laugh

    def laugh_100th(self):

        for i in range(100):

            self.show_laugh()
li_lei = Human()          

li_lei.laugh_100th()

这里有一个类属性laugh。在方法show_laugh()中,通过self.laugh,调用了该属性的值。

还可以用相同的方式调用其它方法。方法show_laugh(),在方法laugh_100th中()被调用。

通过对象可以修改类属性值。但这是危险的。类属性被所有同一类及其子类的对象共享。类属性值的改变会影响所有的对象。

__init__()方法

__init__()是一个特殊方法(special method)。Python有一些特殊方法。Python会特殊的对待它们。特殊方法的特点是名字前后有两个下划线。

如果你在类中定义了__init__()这个方法,创建对象时,Python会自动调用这个方法。这个过程也叫初始化。

class happyBird(Bird):

    def __init__(self,more_words):

        print 'We are happy birds.',more_words
summer = happyBird('Happy,Happy!')

这里继承了Bird类,它的定义见上一讲。

屏幕上打印:

We are happy birds.Happy,Happy!

我们看到,尽管我们只是创建了summer对象,但__init__()方法被自动调用了。最后一行的语句(summer = happyBird...)先创建了对象,然后执行:
summer.__init__(more_words)
'Happy,Happy!' 被传递给了__init__()的参数more_words

对象的性质

我们讲到了许多属性,但这些属性是类的属性。所有属于该类的对象会共享这些属性。比如说,鸟都有羽毛,鸡都不会飞。

在一些情况下,我们定义对象的性质,用于记录该对象的特别信息。比如说,人这个类。性别是某个人的一个性质,不是所有的人类都是男,或者都是女。这个性质的值随着对象的不同而不同。李雷是人类的一个对象,性别是男;韩美美也是人类的一个对象,性别是女。

当定义类的方法时,必须要传递一个self的参数。这个参数指代的就是类的一个对象。我们可以通过操纵self,来修改某个对象的性质。比如用类来新建一个对象,即下面例子中的li_lei, 那么li_lei就被self表示。我们通过赋值给self.attribute,给li_lei这一对象增加一些性质,比如说性别的男女。self会传递给各个方法。在方法内部,可以通过引用self.attribute,查询或修改对象的性质。

这样,在类属性的之外,又给每个对象增添了各自特色的性质,从而能描述多样的世界。

class Human(object):

    def __init__(self, input_gender):

        self.gender = input_gender

    def printGender(self):

        print self.gender
li_lei = Human('male') # 这里,'male'作为参数传递给__init__()方法的input_gender变量。

print li_lei.gender

li_lei.printGender()

在初始化中,将参数input_gender,赋值给对象的性质,即self.gender。

li_lei拥有了对象性质gender。gender不是一个类属性。Python在建立了li_lei这一对象之后,使用li_lei.gender这一对象性质,专门储存属于对象li_lei的特有信息。

对象的性质也可以被其它方法调用,调用方法与类属性的调用相似,正如在printGender()方法中的调用。

总结

通过self调用类属性

__init__(): 在建立对象时自动执行

类属性和对象的性质的区别

Python 相关文章推荐
python使用PyV8执行javascript代码示例分享
Dec 04 Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python编码爬坑指南(必看)
Jun 10 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
numpy数组拼接简单示例
Dec 15 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
python实现局部图像放大
Nov 17 Python
python基础教程之面向对象的一些概念
Aug 29 #Python
初学Python实用技巧两则
Aug 29 #Python
python基础教程之自定义函数介绍
Aug 29 #Python
python爬虫常用的模块分析
Aug 29 #Python
python基础教程之循环介绍
Aug 29 #Python
Python中optionParser模块的使用方法实例教程
Aug 29 #Python
python基础教程之缩进介绍
Aug 29 #Python
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php下实现农历日历的代码
2007/03/07 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
javascript动态加载三
2012/08/22 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python字典操作简明总结
2015/04/13 Python
python语言使用技巧分享
2016/05/31 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
报社实习生自荐信
2014/01/24 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
社团活动总结报告
2014/06/27 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
婚礼父母致辞
2015/07/28 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python