标签: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