摘要: 考察 Student 类: 当我们想要修改一个 Student 的 scroe 属性时,可以这么写: 但是也可以这么写: 显然,直接给属性赋值无法检查分数的有效性。 如果利用两个方法: 这样一来,s.set_score(1000) 就会报错。 这种使用 get/set 方法来封装对一个属性的访问在许 阅读全文
posted @ 2016-12-04 22:31 子非鱼smile 阅读(17541) 评论(4) 推荐(3) 编辑
摘要: 1、python中__str__和repr 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): 现在,在交互式命令行下用 print 试试: 但是,如果直接敲变量 p: 似乎__str__() 不会被调用。 因为 Python 定义了__str__()和__repr__()两种 阅读全文
posted @ 2016-12-04 22:04 子非鱼smile 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 1、python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。 多重继承的继承链就不是一棵树了,它像这样: 看下图: 像这样,D 同时继承自 B 和 C,也就是 D 拥有了 A、B、C 的全部功能。多重继承通过 super()调用__init__()方法时,A 虽然 阅读全文
posted @ 2016-12-04 08:46 子非鱼smile 阅读(2185) 评论(0) 推荐(0) 编辑
摘要: 1、python中继承 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: 定义Student类时,只需要把额外的属性加上,例如score: 一定要用 super(Student, self).__init__(name, gender) 去 阅读全文
posted @ 2016-12-04 08:24 子非鱼smile 阅读(3553) 评论(0) 推荐(0) 编辑
摘要: 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Pyt 阅读全文
posted @ 2016-12-04 08:02 子非鱼smile 阅读(4339) 评论(1) 推荐(0) 编辑
摘要: 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。 仍以Student类为例,在Python中,定义类是通过class关键字: class后面 阅读全文
posted @ 2016-12-04 07:44 子非鱼smile 阅读(29387) 评论(1) 推荐(2) 编辑