摘要: 由于Python是动态语言,根据类创建的实例可以任意绑定属性。 给实例绑定属性的方法是通过实例变量,或者通过self变量: 但是,如果Student类本身需要绑定一个属性呢?可以直接在class中定义属性,这种属性是类属性,归Student类所有: 当我们定义了一个类属性后,这个属性虽然归类所有,但 阅读全文
posted @ 2018-05-08 17:26 牛郎 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: 如果一个变量指向函数或者类,也可以用type()判断: 但是type()函数返回的是什么类型呢?它返回对应的Class类型。 阅读全文
posted @ 2018-05-08 16:59 牛郎 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印: 当我们需要 阅读全文
posted @ 2018-05-08 16:30 牛郎 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Pyt 阅读全文
posted @ 2018-05-08 14:26 牛郎 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。 仍以Student类为例,在Python中,定义类是通过class关键字: cl 阅读全文
posted @ 2018-05-08 14:16 牛郎 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。 现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany,按照如下目录存放: 引入了包以后,只要顶层的包名 阅读全文
posted @ 2018-05-08 13:44 牛郎 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去: 这样,我们转换二进制就非常方便了: functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下 阅读全文
posted @ 2018-05-08 13:25 牛郎 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 什么函数可以被称为闭包函数呢?主要是满足两点:函数内部定义的函数;引用了外部变量但非全局变量。 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针) 装饰器函数的外部函数传入我要装饰的函数名字,返回经过修饰后 阅读全文
posted @ 2018-05-08 13:15 牛郎 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: 通过对比可以看出,匿名函数lambda x: x * x实际上就是: 关键 阅读全文
posted @ 2018-05-08 11:04 牛郎 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 函数作为返回值 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: 当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数: 调用函数f时,才真正计算求和的结 阅读全文
posted @ 2018-05-08 11:00 牛郎 阅读(143) 评论(0) 推荐(0) 编辑