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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 当新版本的一个特性与旧版本不兼容时,该特性将会在旧版本中添加到__future__中,以便旧的代码能在旧版本中测试新特性。
    查看全部
  • try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
    查看全部
  • 函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。
    查看全部
  • 不要忘记super(SubClass,self).__init__() 来初始化父类的属性
    查看全部
  • 通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。
    查看全部
  • 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法:<br> import types<br> def fn_get_grade(self):<br> if self.score >= 80:<br> return 'A'<br> if self.score >= 60:<br> return 'B'<br> return 'C'<br> <br> class Person(object):<br> def __init__(self, name, score):<br> self.name = name<br> self.score = score<br> <br> p1 = Person('Bob', 90)<br> p1.get_grade = types.MethodType(fn_get_grade, p1, Person)<br> print p1.get_grade()<br> # => A<br> p2 = Person('Alice', 65)<br> print p2.get_grade()<br> # ERROR: AttributeError: 'Person' object has no attribute 'get_grade'<br> # 因为p2实例并没有绑定get_grade python中,函数(方法)并不是依附与类才能存在。函数并不只是在类中定义。这种直接在模块中而不是类中定义的函数(方法),叫做函数。 而 方法(method),是依附于类 的,他们定义在类中,是属于类的,但是他们本质上,还是一个函数。方法的第一个参数不一定必须是self。 这么说吧,凡是def foo()这种,都是函数,在类中定义的函数,就是方法。 总结: 方法:类内普通方法,类方法 函数:普通函数,类内的静态方法
    查看全部
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的
    查看全部
  • 在实例上修改类属性其实相当于给这个实例绑定了实例属性,不会改变类属性。 可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问 但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
    查看全部
  • 传入**kw ,可传入任意数量的参数,并通过setattr()绑定属性 class Person(object): def __init__(self, name, gender, **kw): self.name=name self.gender=gender for k,v in kw.iteritems(): setattr(self,k,v)
    查看全部
  • class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for key, value in kw.items(): setattr(self, key, value) 解释器内部会将**kw拆分成对应的dict.<br> setattr()方法接受3个参数:setattr(对象,属性,属性的值)<br> setattr(self,k,v)相当于self.k = v<br> kw.iteritems()历遍字典kw的所有key和value,分别匹配k,v
    查看全部
  • __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 第一个self参数不能忘
    查看全部
  • 由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值 实例的属性可以像普通变量一样进行操作:xiaohong.grade = xiaohong.grade + 1
    查看全部
  • __furure__旧版本要引用新版本中的功能 如3.x中/得到浮点,//才是整数 3.x字符统一为unicode,不需要加前缀u,而字节存储的str必须加前缀b
    查看全部
  • 包下必须包含__init__.py文件
    查看全部

举报

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

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