Python模糊类语法
我在python模块中有这样一个类定义(util/systemlinux.py) 和客户端驱动程序代码(ClientSetup.py) 以上是一个很好的工作代码。Python模糊类语法,python,Python,我在python模块中有这样一个类定义(util/systemlinux.py) 和客户端驱动程序代码(ClientSetup.py) 以上是一个很好的工作代码。 我的问题是,我认为成员变量\u ip是作为SysUtil类的一个实例创建的,但我不明白为什么要将其作为参数传递给SysUtil.validateIP()函数?除此之外,validateIP()只接受其中的两个参数,self是隐式传递的第一个参数。但这里的代码甚至没有抱怨任何错误。允许使用这种语法吗?关于成员变量\u ip是SysUti
我的问题是,我认为成员变量\u ip是作为SysUtil类的一个实例创建的,但我不明白为什么要将其作为参数传递给SysUtil.validateIP()函数?除此之外,validateIP()只接受其中的两个参数,self是隐式传递的第一个参数。但这里的代码甚至没有抱怨任何错误。允许使用这种语法吗?关于成员变量
\u ip
是SysUtil
类的实例,您是对的。但是,SysUtil.validateIP
没有任何隐式传递的参数,因为SysUtil是类的名称,而不是实例。
SysUtil.validateIP(self.\u-ip,'127.0.0.1')
可以重写为self.\u-ip.validateIP('127.0.0.1')
。这里的编写方式只是简单地说,“我想调用validateIP
方法,我想明确地告诉您,您应该调用在SysUtil
类中实现的版本。”这个SysUtil.validateIP(self._ip,'127.0.1')
对于良好的Python OOP实践和设计来说是不正确的方法
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
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')