上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要: __str__ __repr__ __iter__ __next__ __getitem__ __getattr__ 正常情况下,当我们调用类的方法或属性时,如果不存在,就会报错。比如定义Student类: 调用name属性,没问题,但是,调用不存在的score属性,就有问题了: 错误信息很清楚地告 阅读全文
posted @ 2017-11-24 15:48 TimeTree 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 使用__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: 然后,尝试给实例绑定一个属性: 还可以尝试给实例绑定一个方法: 但是,给一个实例绑定的方法,对另一个实例是不起作用的: 给cl 阅读全文
posted @ 2017-11-21 15:34 TimeTree 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: 如果一个变量指向函数或者类,也可以用type()判断: 但是type()函数返回的是什么类型呢?它返回对应的Class类型。如果我们要在if语句中判断,就需要比较两个变量的type类型是否相同: 阅读全文
posted @ 2017-11-21 12:08 TimeTree 阅读(7106) 评论(0) 推荐(0) 编辑
摘要: 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 比如,我们已经编写了一个名为Animal的class,有一个run( 阅读全文
posted @ 2017-11-21 11:26 TimeTree 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 数据封装 面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和score这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩: 但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在Stude 阅读全文
posted @ 2017-11-21 10:19 TimeTree 阅读(12917) 评论(0) 推荐(0) 编辑
摘要: 作用域 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。 公开:正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等; 特殊:类似__xxx__这样 阅读全文
posted @ 2017-11-20 17:03 TimeTree 阅读(196) 评论(0) 推荐(0) 编辑
摘要: Partical function 便函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以 阅读全文
posted @ 2017-11-19 23:48 TimeTree 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 函数对象有一个__name__属性,可以拿到函数的名字: 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式, 阅读全文
posted @ 2017-11-18 16:58 TimeTree 阅读(162) 评论(0) 推荐(0) 编辑
摘要: lambda 匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: 通过对比可以看出,匿名函数lambda x: x 阅读全文
posted @ 2017-11-18 16:26 TimeTree 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: 调用lazy_sum()时,返回求和函 阅读全文
posted @ 2017-11-18 12:20 TimeTree 阅读(593) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 12 下一页