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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。 如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。 __slots__是指一个类允许的属性列表:__slots__ = ('name', 'gender', 'score') __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。 __slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的。除非在子类中也定义__slots__,就像答案中一样,子类允许定义的属性就是自身的__slots__加上父类的__slots__。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2017-05-17

  • @property---这是关键字,固定格式,能让方法当“属性”用。 @score.setter---前面的"score"是@property紧跟的下面定义的那个方法的名字,"setter"是关键字,这种“@+方法名字+点+setter”是个固定格式与@property搭配使用。
    查看全部
    0 采集 收起 来源:python中 @property

    2018-03-22

  • python中类型转换: __int__() __float__()
    查看全部
  • python中数学运算:__add__;__sub__;__mul__;__div__
    查看全部
  • __len__ 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。 只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”
    查看全部
    0 采集 收起 来源:python中 __len__

    2017-05-17

  • __cmp__ 对内置数据类型排序时,sorted()按照默认的比较函数cmp排序,但对于一组类的实例排序时,必须提供我们自己的特殊方法__cmp__()
    查看全部
    0 采集 收起 来源:python中 __cmp__

    2017-05-17

  • Python中的__str__和__repr__: 把一个类的实例变成str,需要实现特殊方法__str__() Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__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)
    查看全部
  • python如何把任意变量变成str: 因为任何数据类型的实例都有一个特殊方法:__str__() 打印类的实例调用的就是这个方法 如果给类加上__str__()这个特殊方法,就可按自己的想法打印
    查看全部
  • python中获取对象信息 1.可以用type()函数获取变量的类型,它返回一个type对象 2.可以用dir()函数获取变量的所有属性 对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。注意到方法`whoAmI`也是 s 的一个属性。 去掉`__xxx__`这类的特殊属性,只保留我们自己定义的属性:print filter(lambda x: x[0]!='_', dir(p)) dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了 >>> getattr(s, 'name') # 获取name属性 'Bob' >>> setattr(s, 'name', 'Adam') # 设置新的name属性 >>> s.name 'Adam' >>> getattr(s, 'age') # 获取age属性,但是属性不存在,报错: Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Student' object has no attribute 'age' >>> getattr(s, 'age', 20) # 获取age属性,如果属性不存在,就返回默认值20: 20
    查看全部
  • python多重继承:从多个父类继承 多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。
    查看全部
  • python中的多态:多态,也就是说,方法调用将作用在 x 的实际类型上。 由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可 动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。
    查看全部
    0 采集 收起 来源:python中多态

    2017-05-17

  • python中判断类型 函数isinstance()可以判断一个变量的类型,既可以用在python的内置数据类型,也可以用在自定义的类 在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。 在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。
    查看全部
  • 定义Student类时,只需要把额外的属性加上,例如score: class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score 一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender。 函数super(Student, self)将返回当前类继承的父类,即 Person ,然后调用__init__()方法,注意self参数已在super()中传入,在__init__()中将隐式传递,不需要写出(也不能写)
    查看全部
  • 类的继承: 总是从某个类继承 class Myclass(object): pass 不要忘记调用super().__init__ def __init__(self,args): super(SubClass,self).__init__(args) pass
    查看全部
  • python中定义类方法 和属性类似,方法也分实例方法和类方法。 在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。 要在class中定义类方法,需要这么写: class Person(object): count = 0 @classmethod def how_many(cls): return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1 print Person.how_many() p1 = Person('Bob') print Person.how_many() 通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。 因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
    查看全部

举报

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

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