【发布时间】:2021-12-29 12:10:54
【问题描述】:
我遇到了一些 python 示例,其中通过调用类并将“self”传递给它来创建类实例。我似乎无法理解它的含义以及我们何时会使用这种结构。
下面是一个示例摘录,其中一个类在另一个类中实例化。我“认为”我也看到过类似objA = Class_def(self) 的东西。我不记得我在哪里看到的,所以最好知道它是否可能。
class BaseState(object):
def __init__(self, protocol):
self.protocol = protocol
def connect(self, request):
state = self.__class__.__name__
class IdleState(BaseState):
def connect(self, request):
return self.protocol.doConnect(request)
class ConnectingState(BaseState):
def handleCONNACK(self, response):
self.protocol.handleCONNACK(response)
class ConnectedState(BaseState):
def disconnect(self, request):
self.protocol.doDisconnect(request)
class BaseProtocol(Protocol):
def __init__(self, factory):
###
# what is happening here -
###
self.IDLE = IdleState(self)
self.CONNECTING = ConnectingState(self)
self.CONNECTED = ConnectedState(self)
self.state = self.IDLE
【问题讨论】:
-
selfin class 指的是类对象。假设一个类有一个名为 name 的变量,self.name = something。而当我们创建该对象的一个实例时,假设它是 X,self.name将在定位对象 X 时变为X.name。你可以阅读更多关于它link here -
您好,感谢您的评论。但这不是我的问题,我问的是
self.IDLE = IdleState(self)这条线是做什么的? -
在您的示例中,
self.IDLE将从名为IdleState的方法中获取其值,同时将对象本身作为该方法的参数传递 -
创建类的实例时一般不会显式传递
self。然而,该类的所有方法都将通过通常给定该名称的参数将当前实例传递给它们。