#!/usr/bin/env python
# Python3 实现
_modeluprivate = '本模块私有' #不能用 from module import * 导入
class People():
def __myprivate(self):
print("This is a private fun")
def __test__(self):
print('call __private: ',end='')
self.__myprivate()
if __name__ == '__main__':
a = People()
a.__test__() # 专有方法,一般系统专用,自己的类方法不要用这种新式命名
a._People__myprivate() # 私有方法被对外被翻译成了这种名字,从而达到私有的效果
print(_modeluprivate)
'''''输出
call __private: This is a private fun
This is a private fun
本模块私有
'''
Python 迭代机制
Python 中的可迭代对象是实现了 __iter__() 方法的对象,而 __iter__() 方法返回一个迭代器对象,迭代器对象内部要实现 __next__() 方法。迭代器对外提供了一个统一的遍历集合的接口,并且可以直接用 for 语句来进行操作,非常的方便。对于一些特别大甚至无限的集合,迭代器避免了一次性将数据集载入,几乎是唯一的访问方法。
#!/usr/bin/env python
# Python3 实现
class IterTest():
def __init__(self):
self.a = 0
def __iter__(self):
return self
def __next__(self):
self.a += 1
if self.a > 3:
raise StopIteration
return self.a
if __name__ == '__main__':
a = IterTest()
for i in a:
print(i,end=' ')
b = IterTest()
print(list(b)) # list()构造器,可以接受可迭代对象
c = IterTest()
print(next(c), next(c), next(c))
'''''输出
1 2 3 [1, 2, 3]
1 2 3
'''
Python 的生成器其实返回的也是一个迭代器,同样可以对其使用 next() 函数,对其使用 for操作,有了 yield 关键字使得创建生成器更加的方便。
#!/usr/bin/env python
# Python3 实现
def funGenerate():
yield 1
yield 2
yield 3
if __name__ == '__main__':
a = funGenerate()
for i in a:
print(i, end=' ')
b = funGenerate()
print(next(b),next(b),next(b))
'''''输出
1 2 3 1 2 3
'''
希望本文所述对大家Python程序设计的学习有所帮助。
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网