美文网首页
1.9、Python基础09 面向对象的进一步拓展

1.9、Python基础09 面向对象的进一步拓展

作者: L小橙子 | 来源:发表于2016-01-12 16:11 被阅读46次

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

调用类的其他信息

上一讲中提到,在定义方法时,必须有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_wordssummer = 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():在简历对象时自动执行
类属性和对象的性质的区别

相关文章

  • 1.9、Python基础09 面向对象的进一步拓展

    我们熟悉了对象和类的基本概念。我们将进一步扩展,以便能实际运用对象和类。 调用类的其他信息 上一讲中提到,在定义方...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • python的面向对象

    python的面向对象(ObjectOriented,OO)-面向对象编程-基础-公有私有-继承-组合,Minxi...

  • 001-python知识

    Python基础 一、Python的基本概念 (一)面向对象 Python是一门面向对象的语言,像C语言和GO语言...

  • Python面向对象(基础)

    面向对象 Python是支持面向对象的,面向对象编程是一种程序设计思想。 类和实例(基础) 面向对象最重要的就是类...

  • 【知识详解】JAVA基础(秋招总结)

    JAVA基础 目录 JAVA基础 问:面向过程(POP)和面向对象(OOP)? 问:Python和Java的区别?...

  • 2.1Python进阶01 词典

    基础教程介绍了基本概念,特别是对象和类。进阶教程针对基础教程的进一步拓展,说明Python的细节。希望在进阶教程之...

  • python笔记

    Python笔记 第一章 简介和基础 1、面向对象的解释型语言2、缺点:运行速度慢 & 代码无法加密3、文件拓展为...

  • 面向Python,面向对象(基础)!

    简单、易学、免费、开源、高层语言、可移植性、解释性、面向对象、可拓展性、丰富的库、规范的代码等。 缺点: 运行速度...

网友评论

      本文标题:1.9、Python基础09 面向对象的进一步拓展

      本文链接:https://www.haomeiwen.com/subject/fxhckttx.html