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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • map(f, list):将函数f依次作用在list的每个元素上,生成一个新的list并返回。

    查看全部
  • class Person(object):


        __count = 0

        

        def __init__(self,name):

            Person.__count += 1

            self.name = name


        @classmethod

        def how_many(cls):

            return cls.__count


    print Person.how_many()


    p1 = Person('Bob')


    print Person.how_many()


    查看全部
  • class Person(object):
    
        def __init__(self, name, score):
            self.name = name
            self.score = score
            self.get_grade = lambda x,y : x*y
    
    p1 = Person('Bob', 90)
    funname = p1.get_grade
    print funname(2,8)
    print p1.get_grade
    print p1.get_grade(3,5)
    16<function <lambda> at 0x00000000026A54A8>15


    查看全部
  • 这一节没有太明白实际作用是什么?为什么要在函数中返回函数呢?

    查看全部
  • 方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法:

    import types
    def fn_get_grade(item):
        if item.score >= 80:
            return 'A'
        if item.score >= 60:
            return 'B'
        return 'C'
    
    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def get_score(self):
            return self.score
    
    p1 = Person('Bob', 90)
    p1.get_grade = types.MethodType(fn_get_grade, p1, Person)
    print p1.get_grade()
    print p1.get_score()


    查看全部
  • class Person(object):
        address = 'Earth'
        def __init__(self, name):
            self.name = name
    
    p1 = Person('Bob')
    p2 = Person('Alice')
    
    print 'Person.address = ' + Person.address
    
    p1.address = 'China'
    print 'p1.address = ' + p1.address
    
    print 'Person.address = ' + Person.address
    print 'p2.address = ' + p2.address


    Person.address = Earth

    p1.address = China

    Person.address = Earth

    p2.address = Earth


    查看全部
  • 特殊方法

    • 定义在class中

    • 不需要直接调用

    • python的某些函数活操作符会调用对应的特殊方法

    任何数据类型的实例都有一个特殊方法

    把任意变量变成str   →   __str__()

    用于print的__str__

    用于len的__len__

    用于cmp的__cmp__


    查看全部
  • class Person(object):


        __count = 0


        def __init__(self, name):

            self.name = name

            Person.__count += 1

            print Person.__count


    p1 = Person('Bob')

    p2 = Person('Alice')

    try:

        print Person.__count

    except AttributeError:

        print 'attributeerror'

    # print p1.__count


    查看全部
  • class Person(object):
        count = 0
        def __init__(self,name,**kw):
            self.name = name
            for key,value in kw.items():
                setattr(self,key,value)
            # Person.count = Person.count + 1
        def __new__(cls,*args,**kwargs):
            Person.count +=1
            return object.__new__(cls,*args,**kwargs)
    
    p1 = Person('Bob')
    print Person.count
    
    p2 = Person('Alice')
    print Person.count
    
    p3 = Person('Tim')
    print Person.count
    
    p4 = Person('Xiaoxiao',age=11)
    print Person.count


    查看全部
  • 获取对象信息

    type()函数 → 获取变量的类型,返回一个type对象

    dir()函数 → 获取变量的所有属性(包括特殊属性__class__、whoAmI),返回一个字符串列表

    getattr()函数、setattr()函数 → 已知属性,获取、设置对象的属性

    >>> getattr(s, 'name')  # 获取name属性'Bob'
    
    >>> setattr(s, 'name', 'Adam')  # 设置新的name属性
    >>> s.name
    'Adam'


    查看全部
  • class Person(object):

        def __init__(self, name, score):

            self.name = name

            self.__score = score


    p = Person('Bob', 59)


    print p.name

    try :

        print p.__score

    except AttributeError:

        print 'attributeerror'


    查看全部
  • class Person(object):

        def __init__(self,name,gender,birth,**kw):

            self.name = name

            self.gender = gender

            self.birth = birth

            for k,v in kw.items():

                self.__dict__[k] = v


    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')


    print xiaoming.name

    print xiaoming.job


    查看全部
  • 多重继承

    https://img1.sycdn.imooc.com//5d565f1000010d2f02050145.png

    多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。


    查看全部
  • Python提供了open()函数来打开一个磁盘文件,并返回 File 对象。File对象有一个read()方法可以读取文件内容:

    例如,从文件读取内容并解析为JSON结果:

    import json
    f = open('/path/to/file.json', 'r')
    print json.load(f)


    查看全部
    0 采集 收起 来源:python中多态

    2019-08-16

  • 多态

    def who_am_i(x):
        print x.whoAmI()

    方法调用将作用在 x 的实际类型上

    传递给函数 who_am_i(x)的参数 x 可以是任何数据类型的实例,只要有whoAmi()方法

    动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

    查看全部
    0 采集 收起 来源:python中多态

    2019-08-16

举报

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

微信扫码,参与3人拼团

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

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