찾다

 >  Q&A  >  본문

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일 전442

모든 응답(2)나는 대답할 것이다

  • 伊谢尔伦

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

    • 이 두 클래스는 서로 아무런 관련이 없습니다(꼭 그렇다고 해야 한다면 둘 다 객체에서 상속한다고 말할 수 밖에 없지만 이는 파이썬에서 클래스라고 말하는 것과 같습니다. 의미가 없습니다).

    • Python은 대소문자를 구분합니다. Connectiton과 연결은 서로 다릅니다. 대소문자를 구분하지 않더라도 표현에 문제가 있습니다. 하나는 클래스 이름이고, 다른 하나는 함수 매개변수 이름으로 혼동될 수 없습니다.

    • 인스턴스를 매개변수로 사용하더라도 var_name = Channel(Connetiton(var1,vqr2……),var2……)

    • 이어야 합니다.

    이런 종류의 기본 개념 질문에 대해서는 모든 Python 튜토리얼에 해당 답변이 있습니다. 커뮤니티에서 추가 질문을 할 필요가 없습니다. 그러면 누군가가 점수를 차감해 줄 것입니다.

    회신하다
    0
  • 巴扎黑

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

    위의 정보는 매우 상세하므로 여기에 몇 가지 사항을 추가하겠습니다.

    Channel 클래스에서 __init__()connection 매개변수와 위의 Connection 클래스는 완전히 다른 항목입니다.

    으아악

    모든 것이 객체라는 생각은 주제에서 벗어나 여기서는 논의하지 않습니다.

    여기서 두 가지는 완전히 독립적인 것입니다.

    "channel 인스턴스의 매개변수를 initconnection 함수에 전달해야 합니다"라고 이해하신 내용은 완전히 정확하지 않습니다.
    귀하의 코드 요구 사항을 모르기 때문에 이 두 클래스에서만 Channel 클래스의 __init__() 메서드에 connection라는 매개 변수가 있는데, 과 같습니다. Connection 클래스의 인스턴스를 전달해야 하는 것은 실제로 "가능"합니다. 개발자는 개발 및 유지 관리의 편의를 위해 코드를 작성할 때 이름을 무작위로 선택하지 않습니다. 하지만 실제 상황은 여전히 ​​코드 요구사항과 전반적인 논리에 따라 달라지므로 이는 "가능한" 것입니다.

    회신하다
    0
  • 취소회신하다