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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 与属性类似,方法也分为实例方法和类方法。

    在class中定义的全部是实例方法,实例方法第一个参数self是实例本身。要在class中定义类方法,必须标记一个@clsssmethod,将方法绑定到类上而非类的实例上。类方法的第一个参数将传入类本身,通常将参数命名为cls。

    因为在类上调用而非实例上调用,一次类方法无法获得任何实例变量,只能获得类的引用。

    如果类属性为私有属性,则外部无法读取,但可以通过一个类方法获取。


    查看全部
  • class中的定义的实例方法其实也是属性,它实际上是一个函数对象(没有括号时返回的是一个绑定到实例的函数对象,打括号时才是方法调用)。

    可用types.MethodType()把一个函数变为一个方法,然后动态地添加到实例上。

    给一个实例动态添加方法并不常见,直接在class中定义要更直观)

    查看全部
  • 除了定义实例的属性外,还可以定义实例的方法。

    实例的方法就是在类中定义的函数(它的第一个参数永远是self,指向调用该方法的实例本身)。调用方法必须在实例上调用。在实例方法内部可以访问所有实例属性,这样如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。

    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。当实例属性没有被单独设置或设置后被删除,则返回类属性的值。

    实例内部可以调用私有属性,只是在外部没法访问。(即可在__init__函数内部输出私有属性)


    查看全部
  • 实例属性每个实例各自拥有,相互独立,而类属性有且只有一份。

    定义类属性可以直接在class中定义,访问类属性不需要创建实例就可以直接访问,同时,所所有的实例都可以访问到它所属的类的属性。

    查看全部
  • 定义类的实例属性时,python根据属性名来对属性权限进行控制。

    双下划线开头:__xxx 不能直接被外部访问

    双下划线开头,双下划线结尾:__xxx__ 可以被外部访问,在python的类中被称为特殊属性(有很多预定义的特殊属性可以使用,通常我们不要把普通属性以这种方式命名)

    单下划线开头: _xxx 虽然可以为外部访问,但是按照习惯不应该被外部访问

    查看全部
  • 利用__init__()方法给一种类型的实例绑定拥有相同名字的属性。__init__方法的第一个参数必须是self(也可以用别的名字,但建议使用习惯用法),后续参数可自由指定,和定义函数类似。相应地,创建实例时就必须要提供self以外的参数。

    查看全部
  • try...except语句:

    用try来捕获错误,并在捕获到指定错误时执行except语句。

    查看全部
  • 在使用decorator的情况下,decorator会改变函数的__name__,__doc__等其它属性(返回的函数名不再是原函数的函数名,而是@log内部定义的wrapper),因此需要把原函数的一些属性复制到新函数中。

    复制时,使用python内置的functools可以自动化完成。

    @functools.wraps(f)

    但是仍然无法获得原始函数的参数信息,参数名等仍可能有所改变。

    查看全部
  • 利用三层嵌套的decorator来实现带参数的装饰器语句。


    查看全部
  • 装饰器函数如@log写死了只含一个参数的返回函数,要让@log自适应任何参数定义的函数,可以利用python中的*args和**kw,保证任意个数的参数总是能正常调用。


    计算函数调用的时间:记录调用前后的当前时间戳,然后计算两个时间戳的差。

    查看全部
  • 匿名函数:

    lambda x: f(x)

    关键字lambda表示匿名函数,冒号前的x表示函数参数,冒号后,为表达式,只能有一个表达式,不写return,返回值就是该表达式的结果。

    匿名函数可以不必定义函数名而直接创建一个函数对象,从而简化代码。


    查看全部
  • 但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    查看全部
  • return math.sqrt(x).is_integer()    内置函数,判断是否为整数

    查看全部
  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    查看全部

举报

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

微信扫码,参与3人拼团

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

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