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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 如果要限制添加的属性,例如,Student类只允许添加 name、genderscore 这3个属性,就可以利用Python的一个特殊的__slots__来实现。

    顾名思义,__slots__是指一个类允许的属性列表:

    class Student(object):
        __slots__ = ('name', 'gender', 'score')
        def __init__(self, name, gender, score):
            self.name = name
            self.gender = gender
            self.score = score

    __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存

    查看全部
    0 采集 收起 来源:python中 __slots__

    2020-01-28

  •  没有装饰器,代码本身就是定义的函数。s.grade ,返回函数名,位置。装饰器函数把 函数 方法“装饰”成属性调用

    查看全部
    0 采集 收起 来源:python中 @property

    2020-01-28

  • @property就是把实例方法当做属性调用的语法,你看下面是直接print s.grade,相当于调用了grade这个属性,所以用@property.

    @score.setter就是你用了 @property  就会产生一个 @***.setter   后面这个是用来设置前面那个类的参数的

    查看全部
    0 采集 收起 来源:python中 @property

    2020-01-28

  • 地板除法:用//表示,不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。比如 1//2 = 0, 1.0//2= 0。2. 传统除法:用/表示,对整数之间的/,执行地板除,但对有浮点数参与的除法则执行传统意义上的除法。比如 1/2 = 0, 1.0/2=0.

    查看全部
  • __add__就是+号,类推...你不信可以把add改成其它字母,例如aaa,然后就运行不了报错了,这些都是内置的

    减法运算:__sub__
    乘法运算:__mul__
    除法运算:__div__

    查看全部
  • self.numbers是实例的属性吗?为什么不放在def__init__(self,num)中?                                                           

    已采纳回答 / weibo_倔强不屈的颜小贱95_0                            

    self.numbers这个在__init__中赋值的,所以是这一类的实例的属性,你把numbers放到__init__的参数位子,你在实例化对象是就必须给它这么一个L,否则报错的。

    查看全部
    0 采集 收起 来源:python中 __len__

    2020-01-28

  • cmp返回的是-1,1,0。sorted在接收cmp返回的-1时,将比较的两个元素(x,y)里的x放前面;当cmp返回的1时,将比较的两个元素(x,y)里的y放前面

    查看全部
    0 采集 收起 来源:python中 __cmp__

    2020-01-28

  • 如果要把一个类的实例变成 str,就需要实现特殊方法__str__():

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
        def __str__(self):
            return '(Person: %s, %s)' % (self.name, self.gender)

    因为 Python 定义了__str__()__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。

    有一个偷懒的定义__repr__的方法:

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
        def __str__(self):
            return '(Person: %s, %s)' % (self.name, self.gender)
        __repr__ = __str__

    查看全部
  • 反复碰壁,反复碰壁

    查看全部
  •  setattr设置新的属性

    查看全部
  •  type() 函数获取变量的类型,它返回一个 Type 对象.

    对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。

    dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() setattr( )函数了:

    查看全部
  • 多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。

    查看全部
  • 动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

    查看全部
    0 采集 收起 来源:python中多态

    2020-01-27

  •  

    我们再考察 s :

    >>> isinstance(s, Person)
    True    # s是Person类型>>> isinstance(s, Student)
    True    # s是Student类型>>> isinstance(s, Teacher)
    False   # s不是Teacher类型

    s 是Student类型,不是Teacher类型,这很容易理解。但是,s 也是Person类型,因为Student继承自Person,虽然它比Person多了一些属性和方法,但是,把 s 看成Person的实例也是可以的

    查看全部
  • Person 是Student,Teacher的父类

    当我们拿到变量 p、s、t 时,可以使用 isinstance 判断类型:

    >>> isinstance(p, Person)
    True    # p是Person类型>>> isinstance(p, Student)
    False   # p不是Student类型>>> isinstance(p, Teacher)
    False   # p不是Teacher类型

    这说明在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。

    查看全部

举报

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

微信扫码,参与3人拼团

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

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