为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.17
571人评价 查看评价
9.6 内容实用
9.0 简洁易懂
8.9 逻辑清晰
  • __len__()方法,就可以用len()函数返回Students实例的“长度”
  • 第一个score(self)是get方法,用@property装饰; 第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品; 第三个grade(self)是get方法,用@score.getter装饰;
  • 如果一个属性由双下划线开头(__),该属性就无法被外部访问。 self.__job = 'Student'
  • 要定义关键字参数,使用 **kw; 除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。 参考代码: class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for k, v in kw.iteritems(): setattr(self, k, v)
  • 在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性: class Person(object): def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 相应地,创建实例时,就必须要提供除 self 以外的参数: xiaoming = Person('Xiao Ming', 'Male', '1991-1-1') xiaohong = Person('Xiao Hong', 'Female', '1992-2-2') 有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符: print xiaoming.name # 输出 'Xiao Ming' print xiaohong.birth # 输出 '1992-2-2'
  • 如何让每个实例拥有各自不同的属性?由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如,给xiaoming这个实例加上name、gender和birth属性: xiaoming = Person() xiaoming.name = 'Xiao Ming' xiaoming.gender = 'Male' xiaoming.birth = '1990-1-1' 给xiaohong加上的属性不一定要和xiaoming相同: xiaohong = Person() xiaohong.name = 'Xiao Hong' xiaohong.school = 'No. 1 High School' xiaohong.grade = 2 实例的属性可以像普通变量一样进行操作: xiaohong.grade = xiaohong.grade + 1
  • class Person(object): 定义类Person pass xiaoming = Person() 创建实例使用“类名+()” xiaohong = Person() print xiaoming 打印实例 print xiaohong print xiaoming == xiaohong 比较两个实例是否相等
  • functools.partial(function, prefix=default) 通过赋值 function 函数的参数的默认值构造新的易调用函数
    查看代码快照
  • 使用装饰器会改变原函数的 f.__name__、 f.__doc__ 等属性 使用 @functools.wraps(f) 自动完成函数属性的还原
    查看代码快照
  • 带参数的 decorator 在无参的外层套上带参数 prefix 的函数,在内层函数使用参数 prefix
    查看代码快照
  • 利用ImportError错误,我们经常在Python中动态导入模块: try: from cStringIO import StringIO except ImportError: from StringIO import StringIO try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
    查看代码快照
  • Python的os.path模块提供了 isdir() 和 isfile()函数,请导入该模块,并调用函数判断指定的目录和文件是否存在。 注意: 1. 由于运行环境是平台服务器,所以测试的也是服务器中的文件夹和文件,该服务器上有/data/webroot/resource/python文件夹和/data/webroot/resource/python/test.txt文件,大家可以测试下。 2. 当然,大家可以在本机上测试是否存在相应的文件夹和文件。 import os print os.path.isdir(r'C:\Windows') print os.path.isfile(r'C:\Windows\notepad.exe') 如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突: import math, logging print math.log(10) # 调用的是math的log函数 logging.log(10, 'something') # 调用的是logging的log函数 如果使用 from...import 导入 log 函数,势必引起冲突。这时,可以给函数起个“别名”来避免冲突: from math import log from logging import log as logger # logging的log现在变成了logger print log(10) # 调用的是math的log logger(10, 'import from logging') # 调用的是logging的log
    查看代码快照
  • 利用Python的 *args 和 **kw,保证任意个数的参数的函数都能正常调用
    查看代码快照
  • 使用 @ 语法简化装饰器函数调用
    03:01
    看视频

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!