我想構建一組類以定義OSI堆棧中的協議的分層屬性...在抽象意義上,我只需要繼承父類python類的屬性,但我需要能夠調用全班鏈一次......所以,我正在尋找這樣的事情...鏈式Python類調用
#!/usr/bin/env python
class Foo(object):
def __init__(self,fooprop1=None):
return None
class Bar(Foo):
def __init__(self,barprop1=None):
return None
if __name__=='__main__':
tryit = Foo(fooprop1="someMacAddress").Bar(barprop1="someIpAddress")
但是,調用該腳本抱怨AttributeError: 'Foo' object has no attribute 'Bar'
能有人告訴我一個方法在python中完成這項工作?在此先感謝...
將OSI堆棧建模爲類層次結構可能不是最好的想法。這些圖層完全相互獨立。試圖通過結合繼承和委託來做到這一點可能是一個壞主意。您可能需要再次使用委派來重新開始。此外,您的示例是一個「流暢」的界面,最好用委派完成。 – 2011-03-19 13:08:56
我同意S.Lott!您的OSI圖層應該是「適配器」,就像人們稱之爲「設計圖案」的設計圖案一樣,它們彼此纏繞在一起,並且依賴於彼此的接口。如果你需要獨立訪問它,你可以將它們結合起來:'Bar(「someIPAddress」,Foo(「someMacAddress」)),或者當然可以首先將'foo'保存在一個變量中。 – 2011-03-19 13:13:48
儘管看起來OSI層是完全獨立的,但實際上它們並不是......例如...... TCP PDU本身就意味着什麼......它總是被包裹在一個IP PDU中,該PDU被包裹在以太網(或PPP/HDLC)幀。最終,我希望能夠實例化一個IP堆棧,然後在它們上面添加TCP或UDP套接字信息......即
可以委託做這個嗎? – 2011-03-19 14:21:54