搜尋

首頁  >  問答  >  主體

python 类和实例

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

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的关系是什么样?
这个是实例作为参数吗?

高洛峰高洛峰2887 天前444

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:43:42

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

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

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

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:43:42

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

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

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

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

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

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

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

    回覆
    0
  • 取消回覆