码迷,mamicode.com
首页 > 编程语言 > 详细

读书笔记--《Python基础教程第二版》--第七章 更加抽象

时间:2017-09-11 18:07:37      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:ja

7.1 对象的魔力

  多态 不同的类的对象使用同样的操作

  封装

  继承


7.1.1 多态

  1、多态和方法

 >>>object.getPrice()

 

>>> ‘abc‘.count(‘a‘)

1

>>> [1,2,‘a‘].count(‘a‘)

1


>>> from random import choice

>>> x=choice([‘Hello world!‘,[1,2,‘e‘,‘e‘,4]])

>>> x.count(‘e‘)

1

>>> x=choice([‘Hello world!‘,[1,2,‘e‘,‘e‘,4]])

>>> x.count(‘e‘)

2


python的多态不需要做类型检测,只要有相同的方法就行,python的多态其实有点像java的函数重载


>>> def add(x,y):

...   return x + y

... 

>>> add(1,2)

3

>>> add(‘Fish‘,‘License‘)

‘FishLicense‘

>>> def length_message(x):

...   print "The length of",repr(x),"is",len(x)

... 

>>> length_message(‘Fnord‘)

The length of ‘Fnord‘ is 5

>>> length_message([1,2,3])

The length of [1, 2, 3] is 3



很多系统函数和运算符都是多态的

唯一能够销毁多态的就是使用函数显示做类型检测,比如type,isinstance、issubclass,但是尽量避免消除



7.1.2 封装

7.1.2 继承

7.2 类和类型

7.2.1 类到底是什么

7.2.2 创建自己的类


class Person:

  def setName(self,name):

    self.name=name

  def getName(self):

    return self.name

  def greet(self):

    print "Hello world! I‘m %s" % self.name


>>> foo=Person()

>>> bar=Person()

>>> foo.setName(‘Luke Skywalker‘)

>>> bar.setName(‘Anakin Skywaler‘)

>>> foo.greet()

Hello world! I‘m Luke Skywalker

>>> bar.greet()

Hello world! I‘m Anakin Skywaler


self 表示对象本身的引用



>>> foo.name

‘Luke Skywalker‘

>>> bar.name

‘Anakin Skywaler‘


>>> bar.name=‘Yoda‘

>>> bar.greet()

Hello world! I‘m Yoda



7.2.3 特性、函数和方法


本文出自 “小鱼的博客” 博客,谢绝转载!

读书笔记--《Python基础教程第二版》--第七章 更加抽象

标签:ja

原文地址:http://395469372.blog.51cto.com/1150982/1964385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!