python 父類 子類,迭代器 生成器

2021-08-06 01:23:54 字數 1556 閱讀 8788

問題:

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...