gpt4 book ai didi

Python/pylint E1101 需要有关正确对象定义的帮助

转载 作者:行者123 更新时间:2023-11-28 23:01:47 26 4
gpt4 key购买 nike

需要一点帮助来理解我做错了什么。可能非常基础,但我还没有全神贯注。

我的代码是这样的:

class baseElement(object):
def __init__(self):
self.Portal = ''
self.locator = ''

def present(self):
return self.Portal.PTF.Presence_of_Element(self.locator)

def visible(self):
return self.Portal.PTF.Is_Element_Visible(self.locator)

class baseActiveElement(baseElement):
def hover(self):
self.Portal.PTF.Mouse_over_element(self.locator)

def click(self):
self.Portal.PTF.Click_on_Element(self.locator)

def get(self):
return self.locator

当我从这些基础实例化对象时,我定义了 Portal,它包括一些函数来执行指定的操作。这行得通。那里没有问题。

但是 pylint 提示道:

E1101:  8,15:baseElement.present: Instance of 'str' has no 'PTF' member
E1101: 11,15:baseElement.visible: Instance of 'str' has no 'PTF' member
E1101: 15,8:baseActiveElement.hover: Instance of 'str' has no 'PTF' member
E1101: 18,8:baseActiveElement.click: Instance of 'str' has no 'PTF' member

我应该怎么做才能不导致此错误?

编辑:如果我将 init 更改为:

class baseElement(object):
def __init__(self):
self.Portal = object
self.Portal.PTF = self.Portal.PTF
self.locator = ''

pylint 的异议消失了,我可以看到将 portal 定义为基础对象的值(value),因为它最终将成为一个真实的对象,但将 Portal.PTF 定义为它本身对我来说似乎是无稽之谈。

最佳答案

推荐的 python 方法是在 __init__ 中将 self.Portalself.locator 初始化为 None 如果您的 API 不需要客户端代码为 __int__ 方法提供这些属性的值(在这种情况下,您的类 API 可能缺少设置这两个属性值的方法)。

Pylint 尝试进行类型推断:如果它在代码中看到的对 self.Portal 的唯一影响是字符串,它将推断属性的类型为 str,并使用它来检查对 self 执行的调用。门户网站。

如果你写:

class baseElement(object):
def __init__(self, portal, locator):
self.Portal = portal
self.locator = locator

它会尝试知道它对门户和定位器的类型一无所知。

如果你在同一个模块中有如下代码:

from somewhere import PortalClass, LocatorClass
# [...]
element = SomeClassDerivingFromBaseElement(PortalClass(), LocatorClass())

然后 Pylint 将能够使用它来收集一些关于可能的门户和定位器类型的知识,并且它将能够分析 PortalClassLocatorClass 的定义> 对于 PTF 等属性,可能会检查 Presence_of_Element 的原型(prototype)。

旁注:我建议尝试在类、属性和方法的命名中实现某种一致性。 Pylint 将为您提供帮助,您可以自定义它使用的正则表达式以匹配您使用的命名约定。

关于Python/pylint E1101 需要有关正确对象定义的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com