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

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

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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
伊谢尔伦
  • Ces deux classes n'ont rien à voir l'une avec l'autre (si vous devez dire qu'elles le font, vous pouvez seulement dire qu'elles héritent toutes les deux d'un objet, mais c'est comme vous dire que ce sont des classes en python, ce qui n'a aucun sens).

  • Python est sensible à la casse. La connexion et la connexion sont deux choses différentes. Même si elles ne sont pas sensibles à la casse, il y a un problème avec votre expression. L'un est le nom de la classe et l'autre est le nom du paramètre de fonction, qui ne peut pas être confondu.

  • Même si l'instance est utilisée comme paramètre, elle devrait l'être var_name = Channel(Connetiton(var1,vqr2……),var2……)

Pour ce genre de question conceptuelle de base, tout tutoriel python aura des réponses correspondantes. Il n'est pas nécessaire de poser des questions supplémentaires dans la communauté (donc quelqu'un déduira des points pour vous...).

巴扎黑

Les informations ci-dessus sont très détaillées, j'ajouterai donc quelques points ici.

Dans votre classe Channel, les paramètres __init__() de connection et la classe Connection ci-dessus sont des choses complètement différentes. Vous devez contacter la relation entre eux :

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

L'idée selon laquelle tout est objet est hors sujet et ne sera pas abordée ici.

Donc ici, ce sont deux choses complètement indépendantes.

Ce que vous comprenez comme "le paramètre d'une instance de channel doit être passé dans la fonction init de connection" n'est pas tout à fait correct.
Parce que je ne connais pas les exigences de votre code, donc juste à partir de ces deux classes, la méthode Channel dans la classe __init__() a un paramètre nommé connection, qui ressemble à Il est en effet "possible" que vous ayez besoin de passer une instance de la classe Connection. Les développeurs ne choisiront pas de noms au hasard lors de l'écriture du code, tout cela pour la commodité du développement et de la maintenance. Mais la situation réelle dépend toujours de vos exigences de code et de votre logique globale, c'est donc juste "possible".

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal