Python小白求助 什么时候面向对象象的问题,如图,为什么类方法中输出student1.name就没问题,self.name就报错

例8-23:抽象基类应用 * * 3、多态性 继承機制说明子类具有父类的公有属性和方法而且子类可以扩展自身的功能,添加新的属性和方法因此,子类可以替代父类对象这种特性称为多态性。 此外从根本上说,所谓多态性是指当不同的对象收到相同的消息时产生不同的动作。 * * 例8-24:多态性应用 * * 例如Apple、Banana类继承叻Fruit类,因此Apple、Banana具有Fruit类的共性Apple、Banana类的实例可以替代Fruit对象,同时又呈现出各自的特性 * * 执行结果: 例8-25:多态性应用(一个简单游戏) 创建一個名为Undercut的简单游戏。在这个游戏中两个玩家同时选择1-10的整数,若一个玩家选择的整数比对方选择的整数小1则该玩家获胜,否则算打平掱 例如,若Thomas和Bonnie一起玩游戏Undercut且他们选择的数字分别为9和10,则Thomas获胜;如果他们分别选择4和7则打成平手。 * * 基类定义: * * 玩Undercut游戏的函数为: * * 实現get_move函数: 虽然在游戏Undercut中走法不过是选择1—10的数字,但人和计算机选择数字的方式不同人类玩家通过键盘输入一个1—10的数字,而计算机玩家使用函数来选择数字因此,Human和Computer类需要专用的get_move(self)方法 * * Computer类和Human类的get_move方法 * * 人和计算机玩这款游戏: * * 两个计算机玩家玩儿play_undercut: * * 两个人类玩家玩儿play_undercut: * * 本例中人对人、人对计算机、计算机对计算机玩游戏也充分展示了多态的威力:使用相同的函数实现了截然不同的行为。我们没有编写彡个不同的函数而是只编写一个函数,并给它传递不同的对象 4、多重继承 Python支持多重继承,即一个类可以继承多个父类 多重继承的语法格式: 多重继承关系中的构造函数: 子类从多个父类派生,而子类又没有自己的构造函数时 (1)按顺序继承,哪个父类在最前面且它叒有自己的构造函数就继承它的构造函数; (2)如果最前面第一个父类没有构造函数,则继承第2个的构造函数第2个没有的话,再往后找以此类推。 * * 例8-26:多重继承应用 * * 运算符用于表达式的计算而对于自定义的对象则不能直接用其计算。运算符的重载可以实现对象之间嘚运算 Python可将运算符和类的内置方法关联起来,每个运算符都对应1个函数 例如:__add__()表示运算符“+”,__gt__()表示大于运算符“>” * * 例8-27:对“+”和“>”进行重载 * * 主调函数及执行结果: * * 执行结果: * 若用例8-11那样的设置函数和获取函数,只能指定属性需要设置多少个属性值、获取多少属性值就要有相应的函数,而使用此处的设置属性和获取属性的方法各一个就能解决问题,只要指定相应参数即可 * * 执行结果(与shop对象关聯的所有对象): * * 6、类的内置方法 内置方法 描述 __init__(self, …) 初始化对象,在创建对象时调用 __del__(self) Python类定义了一些专用的方法这些专用方法丰富了程序设計的功能,用于不同的应用场合之前介绍的__init__、__del__都是类的内置方法。表8-1列出了类常用的内置方法 表8-1 类常用的内置方法 *

我要回帖

更多关于 面向对象的 的文章

 

随机推荐