Head First Python 学习札记 2016-04-10
来源:互联网 发布:淘宝客服怎么做好 编辑:程序博客网 时间:2024/05/16 08:58
- Python术语和常识
- 29将代码打包在类的里面
- 1Python中类的定义及实例化
- 2在类中建立新的方法和新的属性
- 30继承Python的内置list
- 继承类的方法
Python术语和常识:
22、不能在两个py文件之间相互引用,下面这种方法就是错误的。
#C.pyfrom A import b
#A.pyfrom C import d
23、self—这是一个方法参数,总是指向当前对象实例。类中定义的每个方法,都必须提供self作为第一个参数
29、将代码打包在类的里面
定义一个类的时候实际上是在定义一个定制工厂函数,然后可以在代码中使用这个工厂函数创建实例。
1、Python中类的定义及实例化
#创建class Athlete: '''init前后是有两个下划线的,init就是构造函数,self参数是一个很重要的参数,目标标识符赋至self参数,没有这个赋指,Python解释器无法得出方法调用要应用到哪一个对象实例。self参数可以帮助标识要处理那哟个对象实例的数据,实际上在类中定义的所有方法的第一个参数都是self''' def __init__(self): #The code to initialize a 'Athlete' object. def how_big(self): return (len(self.thing))
#实例化a = Athlete()#上面这句等效于下面这句Athlete.__init__(a)
2、在类中建立新的方法和新的属性
class Athlete: #注意根据实际情况设置缺省值 def __init__(self, a_name, a_dob=None, a_times=[]): #通过在构造方法中设置这样的值创造新的属性 self.name = a_name self.dob = a_dob self.times = a_times def top3(self): return (sorted(set([sanitize(t) for t in self.times]))[0:3]) # 记得将self传进去 def add_time(self,time_value): self.times.append(time_value) # 记得将self传进去 def add_times(self,times_value): self.times.extend(times_value)
30、继承Python的内置list
在Python中是支持多重继承的
继承类的方法
#在声明子类的参数表里面传进去一个父类class NamedList(list): def __init__(self,a_name): #初始化所派生的类 list.__init__([]) #把参数赋值给属性 self.name = a_name>>> Johnny = NamedList('John Paul Jones')>>> type(Johnny)<class '__main__.NamedList'>>>> dir(Johnny)#NamedList拥有所用List的方法,还有它特有的属性name来存姓['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'name', 'pop', 'remove', 'reverse', 'sort']#使用list的方法来补充Johnny的数据,直接把Johnny当成列表就好>>> Johnny.append("Bass Player")>>> Johnny.extend(['Composetr','Musician'])>>> Johnny['Bass Player', 'Composetr', 'Musician']>>> Johnny.name'John Paul Jones'#由于Johhny是NamedList的实例,而NamedList是list的子类,所以完全可以把Johnny当做列表处理>>> for attr in Johnny: print(Johnny.name+' is a '+attr+'.')John Paul Jones is a Bass Player.John Paul Jones is a Composetr.John Paul Jones is a Musician.
以下是利用继承重写的Athlete
#利用继承来重写Athlete类class AthleteList(list): def __init__(self,a_name,a_dob=None,a_times=[]): list.__init__([]) self.name = a_name self.dob = a_dob #因为AthleteList本身就是一个list,就不用再创建times了直接加就好 self.extend(a_times) def top3(self): #这里不遍历self.times而是遍历self return (sorted(set([sanitize(t) for t in self]))[0:3])
0 0
- Head First Python 学习札记 2016-04-10
- Head First Python 学习札记 2016-04-06
- Head First Python 学习札记 2016-04-07
- Head First Python 学习札记 2016-04-08
- Head First Python 学习札记 2016-04-09
- 《Head First Python》学习笔记
- Head First Python学习总结
- Head First Python学习笔记
- Python学习笔记《Head first for Python》
- 《Head First Python》学习笔记 01
- head first series 学习记录(Python)
- head first python chap 5 学习笔记
- Head First Python 学习笔记-Chapter5:数据处理
- Head First Python学习笔记(1)
- Head First Python学习笔记(2)
- Head First Python 第三章 学习笔记
- Python学习札记 2016-04-24
- 《Head First Programming》---python 10_GUI Mixer2
- Android实训案例(七)——四大组件之一Service初步了解,实现通话录音功能,抽调接口
- 数据库设计
- 欢迎使用CSDN-markdown编辑器
- char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错?如何改
- Cant Find Compiler Executable In Your Configured Search Path"的解决方法
- Head First Python 学习札记 2016-04-10
- 在Linux中布Java项目的开发环境
- 删除原先的java导致在eclipse中tools.jar找不到
- 操作系统
- POJ 1852 Ants
- HTTP 411 Content-Length required
- 蓝桥杯java -身份证号码升级
- 关于Java流的方式将数据写入到文件中
- C++ Map(list与数组的结合char型)(hash算法.)