为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的:

    class Person(object):
    
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name

    get_name(self) 就是一个实例方法,它的第一个参数是self。__init__(self, name)其实也可看做是一个特殊的实例方法。

    调用实例方法必须在实例上调用:

    p1 = Person('Bob')
    print p1.get_name()  # self不需要显式传入# => Bob


    查看全部
  • 给一个实例动态添加方法并不常见,直接在class中定义要更直观。


    查看全部
  • 可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了:

    del p1.address
    print p1.address# => Earth

    可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。


    查看全部
  • setattr(object, name, value)

    class Person:

        name = 'Adam'

        

    p = Person()

    print('Before modification:', p.name)


    # setting name to 'John'

    setattr(p, 'name', 'John')


    print('After modification:', p.name)


    Before modification: Adam
    After modification: John


    查看全部
  • 要定义关键字参数,使用 **kw;

    除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。


    查看全部
  • 在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__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个属性,并且,被赋予不同的属性值,访问属性使用.操作符:

    print xiaoming.name# 输出 'Xiao Ming'print xiaohong.birth# 输出 '1992-2-2'


    查看全部
  • 面向对象 数据封装的思想

        创建一个类 class person:

             

    查看全部
  • 面向对象编程的基本思想

        类:定义抽象类型  比如人

        实例:根据类的定义被创建出来的  比如小明 小军

    查看全部
  • python 面向对象编程的解释

    查看全部
  • 把一系列模板打包放在一起形成一个包

    不同的包中 可以存在名字相同的模块

    完整的引用模块 import 包名.模块名

                             包名.模块名.函数名

    查看全部
  • 引用其他模块及模块的函数

    import math   #import 模块名
    print(math.pow()) #模块名.函数名


    查看全部
  • 要比较两个实例是否相等,用==操作符


    在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:

    class Person(object):
        pass

    按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。类的继承将在后面的章节讲解,现在我们只需要简单地从object类继承。



    查看全部
  • xxxxxxx

    查看全部
  • xxxxx

    查看全部
  • 利用ImportError错误,我们经常在Python中动态导入模块:

    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO

    上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。

    try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。


    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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