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

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

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类的实例,开发人员在编写代码的时候名字不会乱取,都是为了方便开发和维护。但🎜真实情况🎜还是要看你🎜代码的需求和整体逻辑🎜,因此这里只是“有可能”。🎜
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板