看到如下的代码,不知道这两个类是什么关系?
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的关系是什么样?
这个是实例作为参数吗?
伊谢尔伦2017-04-17 17:43:42
이 두 클래스는 서로 아무런 관련이 없습니다(꼭 그렇다고 해야 한다면 둘 다 객체에서 상속한다고 말할 수 밖에 없지만 이는 파이썬에서 클래스라고 말하는 것과 같습니다. 의미가 없습니다).
Python은 대소문자를 구분합니다. Connectiton과 연결은 서로 다릅니다. 대소문자를 구분하지 않더라도 표현에 문제가 있습니다. 하나는 클래스 이름이고, 다른 하나는 함수 매개변수 이름으로 혼동될 수 없습니다.
인스턴스를 매개변수로 사용하더라도 var_name = Channel(Connetiton(var1,vqr2……),var2……)
이런 종류의 기본 개념 질문에 대해서는 모든 Python 튜토리얼에 해당 답변이 있습니다. 커뮤니티에서 추가 질문을 할 필요가 없습니다. 그러면 누군가가 점수를 차감해 줄 것입니다.
巴扎黑2017-04-17 17:43:42
위의 정보는 매우 상세하므로 여기에 몇 가지 사항을 추가하겠습니다.
Channel
클래스에서 __init__()
의 connection
매개변수와 위의 Connection
클래스는 완전히 다른 항목입니다.
모든 것이 객체라는 생각은 주제에서 벗어나 여기서는 논의하지 않습니다.
여기서 두 가지는 완전히 독립적인 것입니다.
"channel
인스턴스의 매개변수를 init
의 connection
함수에 전달해야 합니다"라고 이해하신 내용은 완전히 정확하지 않습니다.
귀하의 코드 요구 사항을 모르기 때문에 이 두 클래스에서만 Channel
클래스의 __init__()
메서드에 connection
라는 매개 변수가 있는데, 는 과 같습니다. Connection
클래스의 인스턴스를 전달해야 하는 것은 실제로 "가능"합니다. 개발자는 개발 및 유지 관리의 편의를 위해 코드를 작성할 때 이름을 무작위로 선택하지 않습니다. 하지만 실제 상황은 여전히 코드 요구사항과 전반적인 논리에 따라 달라지므로 이는 "가능한" 것입니다.