问题:
python对面向对象的支持程序如何?
python的迭代器和生成器有什么区别和联系?
解决方案:
python可以定义父类、子类,可以定义函数方法和参数。
python的for循环是通过迭代器实现的。
python的生成器需要通过定义一个函数来封装,并结合for循环,返回的是每一次迭代生成的结果。
讨论:
对类的模式需要进一步分析,比如如何定义类,如何解耦合,如何优化类定义。
对生成器需要有特殊场景对应起来,函数定义+for循环的使用方式有些局限,还有没有其他实现方式。
#! usr/bin/env python
# -*- coding: UTF-8 -*-import os
import re
class A(object):
"这里是帮助-A"
param = 1
def __init__(self):
print "init A"
print self.param
class AA(A):
"这里是帮助-AA"
param = 1
## def __init__(self):
## print "init AA"
def yield1(str1):
length = len(str1)
for x in range(length-1, -1, -1):
## print str1[x]
yield str1[x]
print "yield1"
m = yield " hello "
def main():
b = AA()
print b.__doc__
print "\n迭代器"
str1 = 'asdjhfkjhasdk'
iter1 = iter(str1)
length = len(str1)
for x in str1:
print iter1.next()
try:
print iter1.next()
## except BaseException, e:
except StopIteration, e:
print e
pass
print "\n生成器"
for x in yield1(str1):
print x
print u"\n数组倒序"
print str1
str1 = list(str1)
str2 = []
length = len(str1)
for i in range(length-1, -1, -1):
print str1[i]
str2.append(str1[i])
str1.reverse()
print str1
print str2
print cmp(str1,str2)
if __name__ == '__main__':
main()