生活随笔
收集整理的這篇文章主要介紹了
Python(24)-面向对象3-可迭代类对象Pokemon
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面向對象3-Pokemon demo
1.可迭代類對象
想要實現類對象中某些屬性/數值的迭代訪問,需要在類中定義一個__iter__()方法,和__next__() 的方法(python 2 中為next()方法)。
_iter_()返回值是self,
_next_()中遍歷完所有的元素后發起一個StopIteration異常。
class Pokemon(object):def __init__(self
, name
, gender
, level
, type, status
):self
.__type
= typeself
.__gender
= genderself
.__name
= nameself
.__level
= levelself
.__status
= statusself
.__info
= [self
.__name
, self
.__type
, self
.__gender
, self
.__level
, self
.__status
]self
.__index
= -1def getName(self
):return self
.__name
def getGender(self
):return self
.__gender
def getType(self
):return self
.__type
def getStatus(self
):return self
.__status
def lever_up(self
):self
.__status
= [s
+1 for s
in self
.__status
]self
.__status
[0] += 1 def __iter__(self
):print('名字 屬性 性別 級別 等級 能力')return self
def __next__(self
): if self
.__index
== len(self
.__info
)-1:raise StopIteration
else:self
.__index
+= 1return self
.__info
[self
.__index
]class Charmander(Pokemon
):def __init__(self
, name
, gender
, level
):self
.__type
= ('fire', None)self
.__gender
= genderself
.__name
= nameself
.__level
= levelself
.__status
= [10+2*level
, 5+1*level
, 5+1*level
, 5+1*level
, 5+1*level
, 5+1*level
]Pokemon
.__init__
(self
, self
.__name
, self
.__gender
, self
.__level
, self
.__type
, self
.__status
)pokemon1
= Charmander
("Bang", 'male', 5)
print(pokemon1
.getGender
())
print(pokemon1
._Charmander__type
)pokemon2
= Pokemon
("abc", "male", 5, 'fire', 0)
for info
in pokemon2
:print(info
)
""" for info in pokemon1():
TypeError: 'Charmander' object is not callable
難道是因為沒有重寫么?
"""
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的Python(24)-面向对象3-可迭代类对象Pokemon的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。