0

试图创建一个非常简单的 Python 类,但由于在构造函数中使用“self”而感到困惑。

在下面的构造函数代码片段中,'r1' 'r2' 'server' ALL 必须以 'self.' 开头?处理程序方法“user_callback”也一样?

class App:
    def __init__(self,ip,port):
        self._ip=ip
        self._port=port
        r1 = pf.Relay(0)
        r2 = pf.Relay(1)
        server = OSCServer( ( self._ip, self._port) )
        server.addMsgHandler( "/1/push1", user_callback )
4

1 回答 1

1

python中类的每个实例方法都隐式地将其实例作为第一个参数传递。这就是为什么你需要self为每个实例方法添加作为第一个参数,否则你会得到一个错误。

说了这么多,你做什么self完全取决于你。通过这样做self.x = 1,您正在向实例添加一个新变量,并且只针对该实例。如果您打算存储 , r1,r2变量server以供以后在其他方法中使用,那么是的,您希望将它们存储为实例变量。否则,您不需要在它们前面加上self.

python 中的类的行为类似于(并且确实有一个)用于管理其实例变量和方法的字典。您可以通过执行将实例变量添加到它们的实例中self.x = 1

希望这可以帮助!

于 2013-11-05T15:59:15.220 回答