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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • ###iteritems作用:http://www.iplaypy.com/jinjie/items-iteritems.html
    查看全部
  • 由于decorator返回的新函数函数名已经不是'f2',而是@log内部定义的'wrapper'。这对于那些依赖函数名的代码就会失效。decorator还改变了函数的__doc__等其它属性。如果要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数中,所以Python内置的functools可以用来自动化完成这个“复制”的任务
    查看全部
  • 一个属性由双下划线开头(__),该属性就无法被外部访问
    查看全部
  • ''#property是object父类内置的装饰器,可以将方法装饰为属性。 写 s.get_score() 和 s.set_score() 是调用的s实例里面的方法,如左边代码所示,要给分数赋值,目前我们只能s.get_score()和s.set_score(80),用所谓的调用方法的方式来获取分数和赋值,那么我们可以选择更加简便的方式来赋值,那就是将方法装饰成一个属性,用属性的方式来赋值显然要方便很多。 #@property def score(self): return self.__score 那么,用属性的方式来获取到score就可以这么写: print s.score 那么用属的方式score赋值,我们就可以这样: s.score=100 是不是相对于用调用方法的方式来赋值要简单,简便很多呢,这就是@property的妙处。 '''
    查看全部
    0 采集 收起 来源:python中 @property

    2017-10-03

  • 还记得装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用。Python内置的@property装饰器就是负责把一个方法变成属性调用的 1.property是内置的装饰器,应该内置于继承的object父类之中。
    查看全部
    0 采集 收起 来源:python中 @property

    2017-10-03

  • class Person(object): __count = 0 def __init__(self, name): self.name=name Person.__count+=1 p1 = Person('Bob') print p1._Person__count p2 = Person('Alice') print p2._Person__count try: print Person.__count except AttributeError: print 'attributeError'
    查看全部
  • 用 isinstance() 判断它是否是某种类型的实例 可以用 type() 函数获取变量的类型,它返回一个 Type 对象: >>> type(123) <type 'int'> 可以用 dir() 函数获取变量的所有属性: >>> dir(123) # 整数也有很多属性... ['__abs__', '__add__', '__and__', '__class__', '__cmp__', ...] >>> dir(s) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'gender', 'name', 'score', 'whoAmI'] `__class__`这类有特殊意义的属性 dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了: >>> getattr(s, 'name') # 获取name属性 'Bob' >>> setattr(s, 'name', 'Adam') # 设置新的name属性 >>> s.name 'Adam'
    查看全部
  • 属性分为实例属性,也分为类属性,它们定义的位置是有所不同的,并且类属性具有公用的性质。 而且,方法也分为类方法和实例方法,在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。
    查看全部
  • 在python2里面 函数是一段代码,通过名字来进行调用。它能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。 方法也是一段代码,也通过名字来进行调用,但它跟一个对象相关联。方法和函数大致上相同的,但有两个主要的不同之处:象来运行的。 在python3里面函数和方法的区分不再那么明显。
    查看全部
  • python中 __slots__ 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。 如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这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 现在,对实例进行操作: >>> s = Student('Bob', 'male', 59) >>> s.name = 'Tim' # OK >>> s.score = 99 # OK >>> s.grade = 'A' Traceback (most recent call last): ... AttributeError: 'Student' object has no attribute 'grade' __slots__的目的是限制当前类所能拥有的属性,如果不需要添加任意动态的属性,使用__slots__也能节省内存。
    查看全部
    0 采集 收起 来源:python中 __slots__

    2018-03-22

  • python3里 / 结果是浮点数 // 结果是整数
    查看全部
  • print Person.how_many() 因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
    查看全部
  • 因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
    查看全部
  • 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法: import types def fn_get_grade(self): if self.score >= 80: return 'A' if self.score >= 60: return 'B' return 'C' class Person(object): def __init__(self, name, score): self.name = name self.score = score p1 = Person('Bob', 90) p1.get_grade = types.MethodType(fn_get_grade, p1, Person) print p1.get_grade() # => A p2 = Person('Alice', 65) print p2.get_grade() # ERROR: AttributeError: 'Person' object has no attribute 'get_grade' # 因为p2实例并没有绑定get_grade
    查看全部
  • 在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
    查看全部

举报

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

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