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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • >>> getattr(s, 'name')  # 获取name属性
    'Bob'

    >>> setattr(s, 'name', 'Adam')  # 设置新的name属性

    for k,v in kw.iteritems():
                setattr(self,k,v)

    查看全部
  • class BStudent(Student,BasketballMixin):
        pass

    class FTeacher(Teacher,FootballMixin):
        pass


    查看全部
  • isinstance(s, Person)

    super(Student, self).__init__(name, gender)

    查看全部
  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

    查看全部
    0 采集 收起 来源:python中闭包

    2020-02-05

  • def calc_sum(lst):
        def lazy_sum():
            return sum(lst)
        return lazy_sum

    像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

    查看全部
    0 采集 收起 来源:python中闭包

    2020-02-05

  • __init__
    查看全部
  •     def __call__(self, num):
            a, b, L = 0, 1, []
            for n in range(num):
                L.append(a)
                a, b = b, a + b
            return L


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

    2020-02-04

  • class Student(Person):


        #__slots__ = ('name','gender','score')

        #__slots__ = ('score1',) #error

        __slots__ = ('score',)


        def __init__(self, name, gender,score):

            Person.__init__(self, name, gender)

            self.score = score


    s = Student('Bob', 'male', 59)

    s.name = 'Tim'

    s.score = 99

    print s.score

    s.grade = 99 #if(no slots in Student,it runs ok)

    print s.grade


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

    2020-02-04

  •     @property

        def score(self):

            return self.__score


        @score.setter

        def score(self, score):

            if score < 0 or score > 100:

                raise ValueError('invalid score')

            self.__score = score


    查看全部
    0 采集 收起 来源:python中 @property

    2020-02-04

  •     @property

        def grade(self):

    print s.grade

    查看全部
    0 采集 收起 来源:python中 @property

    2020-02-04

  • 这样一来,s.set_score(1000) 就会报错。

    这种使用 get/set 方法来封装对一个属性的访问在许多面向对象编程的语言中都很常见。

    但是写 s.get_score() 和 s.set_score() 没有直接写 s.score 来得直接。

    有没有两全其美的方法?----有。

    class Student(object):
        def __init__(self, name, score):
            self.name = name
            self.__score = score
        @property
        def score(self):
            return self.__score
        @score.setter
        def score(self, score):
            if score < 0 or score > 100:
                raise ValueError('invalid score')
            self.__score = score

    注意: 第一个score(self)是get方法,用@property装饰,第二个score(self, score)是set方法,用@score.setter装饰,@score.setter是前一个@property装饰后的副产品。

    现在,就可以像使用属性一样设置score了:

    >>> s = Student('Bob', 59)
    >>> s.score = 60
    >>> print s.score
    60
    >>> s.score = 1000
    Traceback (most recent call last):
      ...
    ValueError: invalid score

    说明对 score 赋值实际调用的是 set方法。


    查看全部
    0 采集 收起 来源:python中 @property

    2020-02-04

  • return float(self.p) / self.q,把其中一个变成float即可得到float结果

    查看全部
  • gcd(self.p,self.q),求最大公约数

    查看全部
  •     @classmethod

        def how_many(cls):
            return cls.__count


    查看全部
  • 实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。

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

    2020-02-04

举报

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

微信扫码,参与3人拼团

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

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