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

调用类的其它信息

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

class Human(object):laugh = 'hahahaha'def show_laugh(self):print self.laughdef 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_genderdef printGender(self):print self.genderli_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基础09 面向对象的进一步拓展相关推荐

  1. Python基础_07_面向对象1

    python基础7_面向对象1 文章目录 python基础7_面向对象1 一.面向对象:类和对象.魔法方法 1. 面向对象编程概述 1.1[了解]面向过程和面向对象的区别 1.2[知道]类和对象介绍 ...

  2. python基础之面向对象编程

    python基础之面向对象编程 面向对象编程思想 面向对象是一门编程思想,编程思想仅仅是一门思想,与任何技术无关 核心是对象两字,对象可以理解为特征与技能的结合体 基于该编程思想编写程序,就好比创造世 ...

  3. 5.Python基础之面向对象

    文章目录 Python基础之面向对象 面向对象的三大特性 类和对象的关系 类的组成 类的书写规则 实例化对象 检测类和对象的成员 类和对象成员的操作 类成员操作 对象成员操作 关于self 封装特性 ...

  4. Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程–>错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人 ...

  5. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  6. 【Python基础】面向对象封装 案例(二)

    目录 案例二 1.首先开发 枪类 2.接着开发 士兵类 3.开发 开火类. 案例一在这里: [Python基础]面向对象封装 案例(一) 案例二 仍然是一步一步开发.同时,下面的第3小步是完整代码,亦 ...

  7. python基础以及面向对象

    python基础 python基础 第一单元 Python解释器和IDE的安装和初步使用 **一.昨日知识点回顾** **二.本单元知识点概述** (Ⅰ)指定教材 (Ⅱ)知识点概述 (Ⅲ)教学时长 * ...

  8. Day7 - Python基础7 面向对象编程进阶 --转自金角大王

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...

  9. [转载] python基础:面向对象-封装

    参考链接: Python中的面向对象编程2(数据隐藏和对象打印) 文章目录 1.封装的含义2.封装示例1.python中封装功能的实现 3.封装的好处1.封装数据2.降低复杂度 4.封装的特性1.@p ...

最新文章

  1. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  2. 【C】——线程引入 pthread_self 和 pthread_equal 原因 ——解决不同平台的问题!
  3. tank html5,index.html
  4. Spark1.3.0安装
  5. MFC六大核心机制之五、六:消息映射和命令传递
  6. Java EE 6示例– Galleria第2部分
  7. VS2010中 C++创建DLL图解
  8. 科研人的暑假:学长下地中暑,博士小姐姐留校养鱼......
  9. jqprint获取打印页数_高年级应用题40道,假期快给孩子打印练习吧!(含答案)...
  10. go mongodb排序查询_Kotlin与MongoDB整合CURD案例详解
  11. 手动搭建vue+node单页面(一)
  12. MySql递归查询上级,下级
  13. vue基础----用vue来展示表格数据
  14. 我们应该如何做外链?
  15. 关于删除安装ESXI里的VIB小记。
  16. matlab景深合成算法,关于景深合成,你想知道的都在这儿!
  17. 谷歌论文Weight Agnostic Neural Networks(WANN)权重无关神经网络
  18. 十六进制颜色转换ARGB/RGB
  19. Linux搭建samba服务及使用案例
  20. c语言表示注释,c语言中注释的位置

热门文章

  1. 高通安卓调试LCD几方面总结
  2. Ubuntu 12.04搭建MTK 6577 安卓开发环境
  3. 基于WINCE6.0下载multiple XIP镜像文件
  4. python import出错_python import的一些问题
  5. matlab-高数 polar 极坐标系 绘制阿基米德线,心形线
  6. Spring MVC注解故障追踪记
  7. 曾经安全难为智 除却山石不是云——山石网科举办2016年度金融用户峰会
  8. asp.net C# 将数据导出到Execl汇总
  9. Android中RatingBar的自定义效果
  10. 2003年我程序员职业的第一桶金7万元的【教育集团招生收费系统】项目经验、项目来龙去脉分享...