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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 实例方法和类方法最主要的区别在于,定义类方法主要是要加一个装饰器,@classmethod 而实例方法没有这个装饰器 在调用上的区别在于,实例方法要先实例化一个对象再调用这个实例化方法,而类方法不需要有类的实例,直接类名.方法名就可以调用。 实例方法至少有一个参数,通常用self,这个参数里面是这个实例本身。类方法至少有一个参数,通常用cls,这个参数里面是这个类本身。 实例方法由于有实例,所以实例的属性对其实可见的,但类方法显然没有属性。 本质上来讲,类方法和实例方法没有本质区别,只不过在调用的时候,实例方法把这个实例本身当做参数传过去了。 class myclass: @classmethod def classMethod(cls): print('class method') print('parameter : %s'%cls) pass def instanceMethod(self): print('instance method') print('parameter : %s' % self) pass m=myclass() m.instanceMethod()#实例来调用实例方法 myclass.classMethod()#类名.方法名调用类方法 myclass.instanceMethod(m)#类名.方法名,并将实例作为参数传入,和实例调用实例方法一样
    查看全部
  • __init__内print是证明内部可访问和修改私有数据。最后一句print是证明外部无法访问私有数据
    查看全部
  • _xxx 可以在子类中使用,__xxx 不可以在子类中使用
    查看全部
  • 解释器内部会将**kw拆分成对应的dict. setattr()方法接受3个参数:setattr(对象,属性,属性的值) setattr(self,k,v)相当于self.k = v kw.iteritems()历遍字典kw的所有key和value,分别匹配k,v
    查看全部
  • 在定义Person类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,就能在此为每个实例都统一加上所需的属性。__init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),指向调用该方法的实例本身,后续参数则可以自由指定,和定义函数没有任何区别。相应地,创建实例时,就必须要提供除 self 以外的参数
    查看全部
  • http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html装饰器我百度了好多,这篇讲得最容易懂,看完就差不多可以理解了,然后再慢慢消化。这个老师讲得完全不按正常进度来,跳得太快。
    查看全部
  • 这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前
    查看全部
  • 定义的类可以在实例化时提供任意额外的关键字参数从而绑定到实例。 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) p = Person('Bob', 'Male', age=18, course='Python') print p.age print p.course print filter(lambda x: x[0]!='_', dir(p))
    查看全部
  • import json class Students(object): def __init__(self, strlist): self.strlist = strlist def read(self): return(self.strlist) s = Students('["Tim", "Bob", "Alice"]') print json.load(s) 由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。 请尝试编写一个File-like Object,把一个字符串 r'["Tim", "Bob", "Alice"]'包装成 File-like Object 并由 json.load() 解析。
    查看全部
    0 采集 收起 来源:python中多态

    2018-03-22

  • 动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。 这是动态语言和静态语言(例如Java)最大的差别之一。
    查看全部
    0 采集 收起 来源:python中多态

    2017-07-01

  • 一个实例的私有属性就是以__开头的属性,无法被外部访问; 而在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
    查看全部
  • 以"__xxx__"定义的属性在Python的类中被称为特殊属性; 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问; 以双下划线开头的"__xxx"不能直接被外部访问。
    查看全部
  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
    查看全部
    0 采集 收起 来源:python中闭包

    2017-06-30

  • import time, functools def performance(unit): def perf_decorator(f): @functools.wraps(f) def wrapper(*args,**kw): t1 = time.time() r = f(*args,**kw) t2 = time.time() print 'call %s() in %f %s' % (f.__name__,t,unit) return r return wrapper return perf_decorator @performance('ms') def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial.__name__
    查看全部

举报

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

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