为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。

    函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)。


    查看全部
  • count前有__,说明是私有属性,只能在class内部使用self.__count调用

    用了@classmethod后,how__many()变为类方法,传入的是类本身,所以cls相当于Person,cls.count相当于Person.count

    作者就是想说,,私有的属性(双下划线),不能被类外部调用,但是可以通过@classmethod绑定方法调用读取


    查看全部
  • Python中的发放也是属性

    1:方法是在类的内部定义的,只能通过实例化之后使用;而函数是在程序内定义的,可以不必实例化,直接用。举个例子,如果有个方法和函数都叫func,方法的调用方法必须是a.func()(其中,a为类的实例);函数的调用方法为func()。方法的第一个参数必须是self,但是在调用时这个参数不必传入(python自动传入);函数参数没有此类限制

    2:实例名.方法名  得到的是一个函数对象,并且这个函数对象是绑定在这个实例上的。

    3:由于方法也是类的一个属性,所以发放可以动态的绑定在一个实例上。用types.MethodType()


    查看全部
  • class Person(object):
    
        def __init__(self, name, score):
            self.__name = name
            self.__score = score
    
        def get_grade(self):
            if self.__score >= 80:
                return 'A'
            if self.__score >= 60:
                return 'B'
            return 'C'
    
    p1 = Person('Bob', 90)
    p2 = Person('Alice', 65)
    p3 = Person('Tim', 48)
    
    print p1.get_grade()
    print p2.get_grade()
    print p3.get_grade()


    查看全部
  • 因为在类的内部,所以在init内可以访问count属性并且打印,但一定要加上两个下划线,不要想着下划线只是指不被外部访问的功能,在需要用到这个变量时,还是需要加加下划线,当在外部进行访问时就不被允许了,优先级的话,对象含有的属性优先级比类属性带有的优先级高

    查看全部
  • class指明了这是个属性函数。即Person的属性

    count= 0 就是这个实例的属性

    def __init__(self, name)是属性可接受的参数个数和名称

    实例属性可同其他元素一样进行操作(加减乘除)等等

    p1 = Person('Bob')

    Bob是Person中的元素由p1指向


    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性

    查看全部
  • https://img1.sycdn.imooc.com//5b336dca0001fe2c05640248.jpg


    初始化实例属性

    查看全部
  • https://img1.sycdn.imooc.com//5b336eed00019e1004800319.jpg

    Python是动态语言,对每一个实例,都可以直接给他们的属性赋值


    查看全部
  • https://img1.sycdn.imooc.com//5b336fcf0001256303000168.jpg

    定义类并创建实例

    查看全部
  • isinstance(object, classinfo)
    其中,object 是变量,classinfo 是类型即 (tuple,dict,int,float,list,bool等) 和 class类。

    若参数 object 是 classinfo 类的实例,或者 object 是 classinfo 类的子类的一个实例, 返回 True。
    若 object 不是一个给定类型的的对象, 则返回结果总是False。

    查看全部

  • try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。 例如可利用在尝试用包含C语言的模块运行加快运行速度,若不存在此模块则使用已存在的模块https://img1.sycdn.imooc.com//5b3371f1000126ff03530164.jpg

    查看全部
  • https://img1.sycdn.imooc.com//5b33729f00016c9e05820126.jpg

    如果使用import导入模块名,由于必须通过模块名引用函数名,因此不存在冲突:

    而如果使用from……import 导入log函数,势必引起冲突,这是可以通过给函数起个别名来避免冲突


    查看全部
  • 在python2.4前,sorted()和list.sort()函数没有提供key参数,但是提供了cmp参数来让用户指定比较函数。此方法在其他语言中也普遍存在。

    在python3.0中,cmp参数被彻底的移除了,从而简化和统一语言,减少了高级比较和__cmp__方法的冲突。

    在python2.x中cmp参数指定的函数用来进行元素间的比较。此函数需要2个参数,然后返回负数表示小于,0表示等于,正数表示大于。


    查看全部
    0 采集 收起 来源:python中偏函数

    2018-06-28

  • 装饰器的新函数__name__,__doc__等属性与原函数不符,对依赖函数属性的代码会失效。可用functools内置工具把原函数属性复制到新函数里:

    1、调用模块import functools

    2、在装饰器返回的新函数上添加语句

    @functools.wraps(原函数名)


    查看全部

举报

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

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