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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 定义Student类时,只需要把额外的属性加上,例如score:

    class Student(Person):
        def __init__(self, name, gender, score):        super(Student, self).__init__(name, gender)
            self.score = score

    一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 PersonStudent 将没有 namegender

    查看全部
  • lambda是省去return的,但前面的函数不能丢如filter。

    查看全部
  • class Person(object): count = 0 def how_many(cls): return cls.count def __init__(self,name): self.name=name Person.count=Person.count+1
    查看全部
  • def  f(x):  #定义一个求平方数的函数f
       return  x*x
       
    print map(f,[1,2,3,4,5,6,7,8,9]) #t利用map函数,得到一个新的list,每个元素是原来的平方数。
    ==========================
    def format_name(s):
        return s[:1].upper()+s[1:len(s)+1].lower()
    print map(format_name, ['adam', 'LISA', 'barT'])
    -----另一种--------
    def format_name(s):
        return s[0].upper() + s[1:].lower()  #s[0]字符串切片第0个字符,s[1:]字符串切片第1个到最后
    print map(format_name, ['adam', 'LISA', 'barT'])


    查看全部
  • import math #调用math
    
    def add(x,y,f):
        return f(x)+f(y)
    
    print add(25,9,math.sqrt) #sqrt是平方根函数)
    查看全部
  • 类的方法,实例可以用。但是实例的方法,类不可以。

    def __init__(self, name):

            self.name = name

            Person.__count = Person.__count+1

    Self 相当于实例,如果Person.__count改成了Self.__count就相当于给实例加了一个属性。如果想让类叠加上去,就得Person.__count

    查看全部
  • 在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。

    和属性类似,方法也分实例方法和类方法。

    要在class中定义类方法,需要这么写:

    class Person(object):
        count = 0    @classmethod
        def how_many(cls):
            return cls.count
        def __init__(self, name):
            self.name = name
            Person.count = Person.count + 1
    
    print Person.how_many()
    p1 = Person('Bob')
    print Person.how_many()

    通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。

    因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。

    查看全部
  • 只是需要用 types.MethodType() 把一个函数变为一个方法.

    p1 = Person('Bob', 90)
    p1.get_grade = 
    types.MethodType(fn_get_grade, p1, Person)
    print p1.get_grade()# => A


    查看全部
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的.

    在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。

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

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

    查看全部
  • 创建实例必定会调用__init__()方法

    查看全部
  • 绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。类属性也是可以动态添加和修改

    查看全部
  • 我们可以给一个实例绑定很多属性,如果有些属性不希望被外部访问到怎么办?

    Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问


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

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


    查看全部
  • 有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符:

    查看全部

举报

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

微信扫码,参与3人拼团

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

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