Python模糊了类语法

时间:2017-12-28 14:05:12

标签: python

我在这样的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 是隐式传递的第一个参数。但这里的代码甚至没有抱怨任何错误。这种语法是允许的吗?

1 个答案:

答案 0 :(得分:1)

你是对的,成员变量_ipSysUtil类的实例。但是,SysUtil.validateIP没有任何隐式传递的参数,因为SysUtil是类的名称,而不是实例。 SysUtil.validateIP(self._ip, '127.0.0.1')可以重写为self._ip.validateIP('127.0.0.1'),前提是不会出现歧义。这里写的方式只是说,"我想调用validateIP方法,我想明确告诉你应该调用SysUtil类中实现的版本。 #34;