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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • map(f,list)似乎是映射的意思,两个参数,第一个是函数,第二个是函数的参数(函数要处理的内容)。
    查看全部
  • **kw是关键字参数,用于字典 iteritems()用于字典kw的遍历 setattr(self, k, v)就等价于self.k = v 综上就是,遍历dict kw 中的属性,给每个属性设置了属性值。
    查看全部
  • PY创建类属性:类是模板,实例则是根据类创建的对象 1. 绑定在一个实例上的属性不会影响其他实例; 2. 类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个 也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。 类属性可以在class中直接定义 class Person(object): address = 'Earth' def __init__(self, name): self.name = name 因为类属性直接绑定在类上,所以访问类属性不需要创建实例就可以直接访问 >>>print Person.address Earth 对一个实例调用类的属性也是可以访问的,每个实例都可以访问到它所属的类的属性 p1 = Person('Bob') p2 = Person('Alice') >>>print p1.address earth >>>print p2.address earth 类属性也是可以动态添加和修改的 Person.address = 'China' 当类属性的address改变时,所以实例访问到的类属性都改变了
    查看全部
  • PY的访问限制 如果一个实例的某些属性不希望被外部访问,PY对其属性权限的控制是通过属性名来实现的。 如果一个属性由双下划线__开头,该属性无法被外部访问 但是如果一个属性以'__xxx__'的形式定义,它又可以被外部访问,以这种方法定义的属性在PY的类中称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不把普通属性用'__xxx__'的形式定义 以单下划线开头的属性'_xxx'虽然也可以被外部访问,但是按照习惯,他们不应该被外部访问
    查看全部
  • 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
    查看全部
  • 对于实例变量,dir()返回所有实例属性,包括`__class__`这类有特殊意义的属性。注意到方法`whoAmI`也是 s 的一个属性。 如何去掉`__xxx__`这类的特殊属性,只保留我们自己定义的属性?回顾一下filter()函数的用法。 dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了:
    查看全部
  • PY初始化实例属性 一种类型的实例应该拥有相同名字的属性,如Person类应该在创建的时候就拥有name/gender等属性 有一种特殊的__init__()方法,当创建实例时,该方法被自动调用,我们就能在此为每个实例都统一加上属性,下面是 class Person(object): def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth —————————————— __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 —————————————— 相应地,创建实例时,就必须要提供除 self 以外的参数: xiaoming = Person('Xiao Ming', 'Male', '1991-1-1') xiaohong = Person('Xiao Hong', 'Female', '1992-2-2') 有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用'.'操作符
    查看全部
  • PY创建实例属性 py是动态语言,对每一个实例都可以直接给它们的属性赋值 xxf = Person() xxf.name = 'xxf' xxf.gender = 'male' 给xxf加属性未必要和xxf一致 同时 实例的属性可以像普通变量一样进行操作 xxf.salary = xxf.salary + 5000
    查看全部
  • 1.判断某个对象是否是类的实例 isinstance(a1, A) 2.判断两个对象是否是否完全一致(意思为: 判断两个变量引用的地址是否相同,如果相同,则两个变量实际引用为同一对象) 用is进行判断 a3 = a1 print a1 is a3 3.判断两个对象中的内容是否相同 用 == 进行判断 print a1 == a2
    查看全部
  • PY定义类并创建实例 1. 类名以大写字母开头 2. 紧接着是(object),表示该类是从哪个类集成下来的 3. 创建实例使用 类名+(),类型函数调用的形式创建 xiaoming = Person()
    查看全部
  • 面向对象编程:数据封装
    查看全部
  • 面向对象编程的基本思想 * 类和实例:类用于定义抽象类型; 实例根据类的定义被创建出来 类 class Person: pass 实例 xiaoming = Person()
    查看全部
  • PY安装三方模块 1.easy_install 2.pip(已内置到py 2.7.9)
    查看全部
  • 这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。 由于Python是动态语言,所以,传递给函数 who_am_i(x)的参数 x 不一定是 Person 或 Person 的子类型。任何数据类型的实例都可以,只要它有一个whoAmI()的方法即可: 这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。
    查看全部
    0 采集 收起 来源:python中多态

    2017-05-29

  • s 是Student类型,不是Teacher类型,这很容易理解。但是,s 也是Person类型,因为Student继承自Person,虽然它比Person多了一些属性和方法,但是,把 s 看成Person的实例也是可以的。 这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。
    查看全部

举报

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

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