Python 基础09 面向对象的进一步拓展
调用类的其他信息
上一讲中提到,在定义方法时,必须有self这一个参数,这个参数表示某个对象,对象有有类的所有性质,
那么我么可以通过self 调用类属性。
class Human(object):
laugh = 'hahhahahahha'
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 基础09 面向对象的进一步拓展的更多相关文章
- Python基础09 面向对象的进一步拓展
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的 ...
- Python 基础 四 面向对象杂谈
Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- 二十. Python基础(20)--面向对象的基础
二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- Day7 - Python基础7 面向对象编程进阶
Python之路,Day7 - 面向对象编程进阶 本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...
- Python基础7 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...
- python基础之面向对象高级编程
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) ...
随机推荐
- Django 创建web项目之HelloWorld
Django.Flask.Tornado并称为python WEB三大框架.Diango是一个开源的web应用框架,具有开发速度快的特点.同时因为过度封装,具有性能低的特点. 创建Django项目,启 ...
- iOS -NSOperation并发编程
http://www.cocoachina.com/game/20151201/14517.html http://blog.csdn.net/qinlicang/article/details/42 ...
- vue-router+iview(简单例子)
根据上面我们已经建立好的工程项目,我们来加入路由等方法. 首先修改我们的HelloWorld.vue,加入iview的Layout组件 第二步,建立两个我们对应路由的文件 <style scop ...
- R语言可视化--颜色
RColorBrewer包 三类调色板:sequential / diverging / qualitative 调色板的信息可以与colorRamp / colorRampPalette结合使用 从 ...
- html 遮罩层以及弹出框的制作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【JZOJ4710】【NOIP2016提高A组模拟8.17】Value
题目描述 输入 输出 样例输入 5 8 2 10 7 5 1 11 8 13 3 样例输出 27 数据范围 解法 选定一些物品a[1],a[2],a[3]-a[num],尝试交换a[i],a[j],那 ...
- Leetcode693.Binary Number with Alternating Bits交替位二进制数
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等. 示例 1: 输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2: 输入: 7 输出 ...
- 初探uni-app
第一步:下载 第二步:安装 第三步:创建项目 第四步:项目目录 项目运行 项目效果为 打包为原生App(云端) 运行打包 使用vue 效果如下,并不好看 使用代码如下 未完,待续.... 就是对着官网 ...
- 【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像
前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP.CV.物联网.无人机等多个领域都发挥了非常重要的作用.最近几年,各种深度学习算法层出不穷, Generative Adverarial Ne ...
- 【软件安装】python安装numpy、scipy
python2.7开发环境,若为python3.4的环境则下载对应的软件 系统为64为windows环境,显然不同于32的环境,更繁琐,所谓的网友教程也不尽人意. 安装numpy 下载地址:http: ...