python 类和实例
高洛峰
高洛峰 2017-04-17 17:41:42
0
2
436

看到如下的代码,不知道这两个类是什么关系?

class Connetiton(object):
    def channel(self,on_open_callback,channel_number=None):
        self._channels[channel_number]=self._create_channel(channel_number,on_open_callback)
    def _create_channel(self,channel_number,on_open_callback):
        return channel.Channel(self,channel_number,on_open_callback)
class Channel(object):
    def __init__(self,connection,channel_number,on_open_callback=None):
        self.connection=connection      

在connection 类里会调用到Channel的类去channel
那么那个connection 和channel的关系是什么样?
这个是实例作为参数吗?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
伊谢尔伦
  • 這兩個類別沒什麼關係(如果非要說有,就只能說他們都繼承自object,可這就像告訴你它們是python中的類別一樣,沒啥意思)。

  • python是區分大小寫的,Connetiton和connection是兩回事,即使不區分大小寫,你的表述也是有問題的。一個是類別的名稱,一個是函數參數的名稱,不可混為一談。

  • 即使是以實例作為參數,也應該是var_name = Channel(Connetiton(var1,vqr2……),var2……)

這種基本概念的問題,任意的python教程都會有對應的答案,不需要到社區額外提問(所以有人給你扣分了…)。

巴扎黑

樓上說的很詳細了,我這裡補充一點。

你的Channel類別中,__init__()connection參數,和上面Connection類,是完全兩碼事,硬要聯繫它們兩個之間的關係:Channel类中,__init__()connection参数,和上面Connection类,是完全两码事,硬要联系它们两个之间的关系:

1.它们名字一样(除了大小写)
2.它们都是对象

万物皆对象这个是题外话了,这里不谈。

所以在这里,它们两个是完全独立的两个东西。

你理解的“在channelinit函数中需要传入一个connection 的实例的参数”,不完全正确。
因为不知道你代码的需求,所以单从这两个类来看,Channel类中的__init__()方法有一个名叫connection的参数,它看起来确实“有可能”需要传入Connection rrreee 萬物皆對象這個是題外話了,這裡不談。 所以在這裡,它們兩個是完全獨立的兩個東西。

你理解的“在channelinit函數中需要傳入一個connection 的實例的參數”,不完全正確。
因為我不知道你程式碼的需求,所以單從這兩個類別來看,Channel類別中的__init__()方法有一個名叫 connection的參數,它#🎜🎜#看起來#🎜🎜#確實「有可能」需要傳入Connection類別的實例,開發人員在寫程式碼的時候名字不會亂取,都是為了方便開發維護。但#🎜🎜#真實情況#🎜🎜#還是要看你#🎜🎜#程式碼的需求和整體邏輯#🎜🎜#,因此這裡只是「有可能」。 #🎜🎜#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板