摘要: Python的class允许定义许多定制方法,可以让我们非常方便地生成特定的类。以下是集中常见的定制方法: 怎么才能打印得好看呢?只需要定义好__str__()方法,返回一个好看的字符串就可以了: __str__() 这样打印出来的实例,不但好看,而且容易看出实例内部重要的数据。 但是细心的朋友会发 阅读全文
posted @ 2018-05-09 11:35 牛郎 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 多重继承,继承了不同大类的所有功能,这种设计称之为Mixln,其目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。 如: 阅读全文
posted @ 2018-05-09 10:53 牛郎 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数: 还记得装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用。Python内置 阅读全文
posted @ 2018-05-09 10:19 牛郎 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: 然后,尝试给实例绑定一个属性: 还可以尝试给实例绑定一个方法: 但是,给一个实例绑定的方法,对另一个实例是不起作用的: 为了给所有实例都绑定方法,可以 阅读全文
posted @ 2018-05-09 10:11 牛郎 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 由于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) 编辑