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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Teacher(Person): def __init__(self, name, gender, course): super(Teacher,self).__init__(name,gender) self.course = course t = Teacher('Alice', 'Female', 'English') print t.name print t.course
    查看全部
  • 因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法: import types def fn_get_grade(self): if self.score >= 80: return 'A' if self.score >= 60: return 'B' return 'C' class Person(object): def __init__(self, name, score): self.name = name self.score = score p1 = Person('Bob', 90) p1.get_grade = types.MethodType(fn_get_grade, p1, Person) print p1.get_grade() # => A p2 = Person('Alice', 65) print p2.get_grade() # ERROR: AttributeError: 'Person' object has no attribute 'get_grade' # 因为p2实例并没有绑定get_grade 给一个实例动态添加方法并不常见,直接在class中定义要更直观。
    查看全部
  • 小写字母变大写用 upper(),大写字母变小写用 lower() def format_name(s): return s[:1].upper()+s[1:].lower() print map(format_name, ['adam', 'LISA', 'barT'])
    查看全部
  • 为什么一定要写成 math.sqrt ?
    查看全部
  • def prod(x, y): return x*y L=[2, 4, 5, 7, 12] print reduce(prod,L)
    查看全部
  • print sorted(['bob', 'about', 'Zoo', 'Credit'], key = str.lower)
    查看全部
  • 删除函数,返回 False或者True
    查看全部
  • 一句话理解,decorator函数把其后定义的函数包装成新的函数,但是返回的是原来定义函数。
    查看全部
  • 确保引用的局部变量在函数返回后不能变
    查看全部
    0 采集 收起 来源:python中闭包

    2015-08-15

  • self.get_grade = lambda: 'A' print lambda: 'A'的结果是at 0x114888c0> 1、get_grade是一个变量,把at 0x114888c0>赋值给它,相当于是一个地址 2、get_grade()的操作可以看作输出对应地址中存放的值
    查看全部
  • setattr(object, name, value) This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. The string may name an existing attribute or a new attribute. The function assigns the value to the attribute, provided the object allows it. For example, setattr(x, 'foobar', 123) is equivalent to x.foobar = 123. setattr(self,k,v) =>self.k=v
    查看全部
  • print reduce(lambda x,y:x*y,[2,4,5,7,12])
    查看全部
  • 1.多重继承通过 super()调用__init__()方法时,即使父类被继承了两次,但__init__()只调用一次 2.多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。 3.__init__()方法是用来为实例统一加上属性的。继承类需要用super().__init__()来初始化父类的属性。但是不需要去初始化方法!
    查看全部
  • 1.多态:如果我们从 Person 派生出 Student和Teacher ,并都写了一个 whoAmI() 方法,在一个函数中,如果我们接收一个变量 x,则无论该 x 是 Person、Student还是 Teacher,都可以正确打印出结果,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。 2.动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。
    查看全部
    0 采集 收起 来源:python中多态

    2015-08-14

  • 这说明在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。 一个实例可以看成它本身的类型,也可以看成它父类的类型。 函数isinstance()可以判断一个变量的类型
    查看全部

举报

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

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