我在这样的python模块中有一个类定义(util / systemlinux.py)
class SysUtil():
def __init__(self):
pass
def validateIP(self, ip):
result = True
try:
if len(ip.split('.')) == 4:
socket.inet_aton(ip)
else:
result = False
except socket.error:
result = False
return result
在客户端驱动程序代码(ClientSetup.py)
from util.systemlinux import SysUtil
class ClientSetup():
def __init__(self):
self._ip = SysUtil() # what is this doing?
def checkIP(self):
ret = SysUtil.validateIP(self._ip, '127.0.0.1')
以上是一个很好的工作代码。 我的问题是,我认为成员变量 _ip 是作为 SysUtil 类的一个实例创建的,但我不明白为什么它作为参数传递给 SysUtil .validateIP()功能?更多关于此 validateIP()的确接受2个参数,其中 self 是隐式传递的第一个参数。但这里的代码甚至没有抱怨任何错误。这种语法是允许的吗?
答案 0 :(得分:1)
你是对的,成员变量_ip
是SysUtil
类的实例。但是,SysUtil.validateIP
没有任何隐式传递的参数,因为SysUtil是类的名称,而不是实例。
SysUtil.validateIP(self._ip, '127.0.0.1')
可以重写为self._ip.validateIP('127.0.0.1')
,前提是不会出现歧义。这里写的方式只是说,"我想调用validateIP
方法,我想明确告诉你应该调用SysUtil
类中实现的版本。 #34;