创建对象时,默认调用构造方法__init__(),当删除一个对象时,同样也会默认调用一个方法,这个方法为析构方法__del__()。
逐一迭代输出的方法:首先在__init__()中定义一个list,把类的所有属性都存放进去,然后定义一个index=-1用于循环。接着,在类中写一个next(),在next()中,可以编辑停止迭代的条件(当index>xx的时候,raise StopOteration),还编辑返回list[index](),并且index++(实现逐一迭代输出类的属性)。
例子:
实现代码:
class Charmander:
def __init__(self,name,gender,level,status,attribute):
self.name = name
self.gender = gender
self.level=level
#能力中除了第一个为string外,其他的需要根据level计算除了
power=["",1,2,3,4,5,6]
power[0]=status
power[1]=self.level*2+10
for index in range(2,7):
power[index]=self.level+5
self.power = power
self.attribute = attribute
#把所有属性存储在一个List中
self.info=[self.name,self.gender,self.level,self.power,self.attribute]
#设置一个下标用于逐一迭代输出
self.index=-1
#获取玩家信息
def getName(self):
return self.name
def getGender(self):
return self.gender
def getStatus(self):
return self.power
def getType(self):
return self.attribute
#迭代升级变化
def level_up(self):
self.level+=1
self.power[1]+=2
for index in range(2,7):
self.power[index]+=1
#升级后原list中的属性需要更新
self.info[2]=self.level
self.info[3]=self.power
#迭代输出
def __iter__(self):
print("名字 性别 等级 能力 属性")
return self
#逐一迭代
def next(self):
#当index>3,所有属性已经遍历完毕
if self.index>3:
self.index=-1
raise StopIteration
#遍历属性,逐一输出
self.index+=1
return self.info[self.index]
#升级前
player1 = Charmander("玩家1","男",5,"法师","风属性")
player1.__iter__()
#迭代使用方法
iterator = iter(player1.next,0)
for info in iterator:
print(info)
print()
#升级后
print("升1级后:")
player1.__iter__()
player1.level_up()
iterator2 = iter(player1.next,0)
for info2 in iterator2:
print(info2)
实现效果图: