上一节(3.6设计讨论)|下一节(4.2继承)4.1类本节介绍类语句以及如何创建新对象。面向对象编程(OOP)面向对象编程是一种将代码组织成对象集合的编程技术。一个对象包括:数据。属性行为。方法-应用于对象的函数。在本课程中,您使用了面向对象的编程技术。例如,动作列表。>>>nums=[1,2,3]>>>nums.append(4)#方法>>>nums.insert(1,10)#方法>>>nums[1,10,2,3,4]#Data>>>nums是列表(instance)的一个实例。方法(append()和insert())绑定到实例(nums)。class语句使用class语句定义一个新对象。玩家类:def__init__(self,x,y):self.x=x自我。y=y自我。health=100defmove(self,dx,dy):self.x+=dx自我。y+=dydefdamage(self,pts):self.health-=pts简而言之,类是一组对所谓的实例执行各种操作的函数。实例实例是您在程序中操作的实际对象。实例是通过像函数一样调用类来创建的。>>>a=Player(2,3)>>>b=Player(10,20)>>>a和b都是Player类的实例。强调:class语句只是一个定义(它本身什么都不做)。类似于函数定义。实例数据每个实例都有自己的本地数据。>>>a.x2>>>b.x10数据通过_init__()方法初始化。classPlayer:def__init__(self,x,y):#`self`上存储的任何值都是实例数据self.x=xself.y=yself.health=100总数和类型没有限制属性。实例方法应用于对象实例的函数称为实例方法。classPlayer:...#`move`是一个方法defmove(self,dx,dy):self.x+=dxself.y+=dy对象本身总是作为第一个参数传递。>>>a.move(1,2)#将`a`匹配到`self`#将`1`匹配到`dx`#将`2`匹配到`dy`defmove(self,dx,dy):按照惯例,该实例称为self。但是,实际使用的名称并不重要。对象始终作为第一个参数传递。调用这个参数self只是Python编程风格。ClassScope类没有定义名字的范围。玩家类:...defmove(self,dx,dy):self.x+=dx自我。y+=dydefleft(self,amt):move(-amt,0)#否。调用全局“移动”函数self.move(-amt,0)#是。从上面调用方法`move`。如果要对实例进行操作,总是需要显式引用它(例如:self)。练习从这组练习开始,我们将对前面章节中的现有代码进行一系列更改。从练习3.18版本的代码入手非常重要。如果您还没有代码,请转到Solutions/3_18目录并复制它。练习4.1:将对象视为数据结构在第2节和第3节中,我们处理了表示为元组和字典的数据。例如,股票持有量可以表示为这样的元组:s=('GOOG',100,490.10)或像这样的字典:s={'name':'GOOG','shares':100,'price':490.10}您甚至可以编写操作此类数据的函数。例如:defcost(s):returns['shares']*s['price']但是,随着程序规模的不断扩大,您可能希望创建更好的代码组织感。因此,可以定义一个类来表示数据。创建一个名为stock.py的文件并定义一个名为Stock的类来表示个人持有的股票。Stock类具有name、shares和price属性。示例:>>>importstock>>>a=stock.Stock('GOOG',100,490.10)>>>a.name'GOOG'>>>a.shares100>>>a.price490.1>>>创建更多多个Stock对象并对其进行操作。示例:>>>b=stock.Stock('AAPL',50,122.34)>>>c=stock.Stock('IBM',75,91.75)>>>b.shares*b.price6117.0>>>c.shares*c.price6881.25>>>stocks=[a,b,c]>>>stocks[
