問題:
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]
str1.reverse()
print str1
print str2
print cmp(str1,str2)
if __name__ == '__main__':
main()
python 子類與父類
coding utf 8 建立乙個空類 class person pass someone person 加入初始化方法 class person def init self 第乙個引數必須為self pass 為初始化方法新增額外引數 class person def init self,name...
Python子類和父類
寫過程式的都知道類,就是物件導向的意思,程式設計的水平大致分為幾個層次,基本語法,函式,物件導向,資料結構,架構,越往上水平越高。在建立類的時候,我們通常把具有相關性的函式包裝為乙個類,類也可以巢狀,叫父類和子類,尤其在python中,所有的物件都可以當成乙個variable,下面給出乙個類巢狀的例...
Python 子類呼叫父類方法
python在繼承時,如果子類重寫了init 函式,則父類的init 不會被呼叫,這時如果子類只是想要對父類的init 函式進行簡單的擴充套件的話,是很不方便的。那麼有沒有比較方便的方法來從子類呼叫父類呢?第一種是直接使用父類的類名來直接呼叫。python3.3 class parent def i...