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 相关文章推荐
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
如何在Python中编写并发程序
Feb 27 Python
Python安装使用命令行交互模块pexpect的基础教程
May 12 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python3处理HTTP请求的实例
May 10 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python检测数据类型的方法总结
May 20 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python中Mako库实例用法
Dec 31 Python
Django使用channels + websocket打造在线聊天室
May 20 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
PHP 采集程序 常用函数
2008/12/18 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
js同源策略详解
2015/05/21 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
python八大排序算法速度实例对比
2017/12/06 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
环保建议书100字
2014/05/14 职场文书
商业用房租赁协议书
2014/10/13 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书