GVKun编程网logo

Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'(python 类属性继承)

10

本文将分享Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'的详细内容,并且还将对python类属性继承进行详尽解释,此外,我们还将为大家带来关于Attr

本文将分享Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'的详细内容,并且还将对python 类属性继承进行详尽解释,此外,我们还将为大家带来关于AttributeError: 'Class' 对象没有属性 'rep_call'、AttributeError:'bool'对象没有属性'le'— pyqt —将文本放入python变量、AttributeError:'NoneType'对象没有属性'text',(xml,python)、AttributeError:'str'对象没有属性'decode' Python 3和Python 2.7兼容性的相关知识,希望对你有所帮助。

本文目录一览:

Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'(python 类属性继承)

Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'(python 类属性继承)

我有以下基类和子类:

class Event(object):    def __init__(self, sr1=None, foobar=None):        self.sr1 = sr1        self.foobar = foobar        self.state = STATE_NON_EVENT# Event class wrappers to provide syntatic sugarclass TypeTwoEvent(Event):    def __init__(self, level=None):        self.sr1 = level        self.state = STATE_EVENT_TWO

在我的代码中,进一步,我正在检查一个TypeTwoEvent类的实例,检查我知道在基类中存在的字段-我希望将其默认为value
None。但是,我的代码引发以下异常:

AttributeError:“ TypeTwoEvent”对象没有属性“ foobar”

我的印象是,基类字段将由子类继承,并且创建子类的实例将实例化基类(从而调用其构造函数)…

我在这里想念什么?为什么TypeTwoEvent没有一个foobar属性-当其所来源的基本类有一个foobar属性?

答案1

小编典典

您的子类应为:

class TypeTwoEvent(Event):    def __init__(self, level=None, *args, **kwargs):        super(TypeTwoEvent, self).__init__(*args, **kwargs)        self.sr1 = level        self.state = STATE_EVENT_TWO

因为您覆盖了__init__方法,所以如果您希望发生父行为,则需要调用父方法。

记住,__init__不是一个奇怪的名字的特殊方法。这只是创建对象后自动调用的方法。否则,这是一个普通方法,并且适用普通继承规则。

super(ClassName, self).__init__(arguments, that, goes, to, parents)

是调用方法的父版本的语法。

对于*args**kwargs,它只是确保我们捕获传递给__init__父方法的所有其他参数,因为您的子方法签名没有做到,并且父方法需要这些参数才能工作。

AttributeError: 'Class' 对象没有属性 'rep_call'

AttributeError: 'Class' 对象没有属性 'rep_call'

如何解决AttributeError: ''Class'' 对象没有属性 ''rep_call''?

我想使用 Pytest 和 Selenium 测试 Web 应用程序。我只想在测试方法失败时捕获屏幕截图。我有以下固定装置:

def driver_init(request):
    # set up driver

    def close_driver():
        driver.quit()

    request.cls.driver = driver
    request.addfinalizer(close_driver)
    yield driver
    if request.node.rep_call.Failed:
        try:
            allure.attach(driver.get_screenshot_as_png(),name=request.function.__name__,attachment_type=AttachmentType.PNG)
        except:
            pass

但是,当我运行此代码并且测试方法失败时,我收到以下错误:

AttributeError: ''Class'' 对象没有属性 ''rep_call''。

我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

AttributeError:'bool'对象没有属性'le'— pyqt —将文本放入python变量

AttributeError:'bool'对象没有属性'le'— pyqt —将文本放入python变量

我使用Qt
Designer创建了一个UI,该UI具有简单的行输入和一个按钮。我试图在python变量中获取行编辑的输入,但这使我出错。这是我的python代码:

from PyQt4 import QtGuiimport sysimport progimport MySQLdbclass ExampleApp(QtGui.QMainWindow, prog.Ui_Program):    def __init__(self, parent=None):        super(ExampleApp, self).__init__(parent)        self.setupUi(self)        self.pushButton.clicked.connect(functioni)def functioni (self):    db = MySQLdb.connect(host="localhost",                      user="root",                            passwd="*****",                         db="testpy")    cur = db.cursor()    cur.execute("INSERT INTO Name (Name) VALUES (?)", self.le.text()) #self.le.text() is giving me trouble...    db.commit()    cur.close()    db.close()def main():    app = QtGui.QApplication(sys.argv)    form = ExampleApp()    form.show()    app.exec_()if __name__ == ''__main__'':    main()

我的用户界面代码具有以下内容:

self.le = QtGui.QLineEdit(self.centralwidget)self.le.setObjectName(_fromUtf8("le"))

当我运行python程序时,出现以下错误:

Traceback (most recent call last):  File "main.py", line 20, in functioni  cur.execute("INSERT INTO Name (Name) VALUES (?)", self.le.displayText())AttributeError: ''bool'' object has no attribute ''le''

之前可能已经问过这个问题,但我已经尝试了所有方法,但无法正常工作!我不知道这里是什么布尔。该解决方案可能微不足道,但如果有人指出我的错误,我将不胜感激。谢谢。

这是我的完整ui代码:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file ''prog.ui''## Created by: PyQt4 UI code generator 4.11.4## WARNING! All changes made in this file will be lost!from PyQt4 import QtCore, QtGuitry:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    def _fromUtf8(s):        return stry:    _encoding = QtGui.QApplication.UnicodeUTF8    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError:    def _translate(context, text, disambig):        return QtGui.QApplication.translate(context, text, disambig)class Ui_Program(object):    def setupUi(self, Program):        Program.setObjectName(_fromUtf8("Program"))        Program.resize(351, 138)        Program.setLayoutDirection(QtCore.Qt.LeftToRight)        self.centralwidget = QtGui.QWidget(Program)        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))        self.formLayout = QtGui.QFormLayout(self.centralwidget)        self.formLayout.setObjectName(_fromUtf8("formLayout"))        self.label = QtGui.QLabel(self.centralwidget)        self.label.setObjectName(_fromUtf8("label"))        self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.label)        self.le = QtGui.QLineEdit(self.centralwidget)        self.le.setObjectName(_fromUtf8("le"))        self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.le)        self.pushButton = QtGui.QPushButton(self.centralwidget)        self.pushButton.setObjectName(_fromUtf8("pushButton"))        self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.pushButton)        Program.setCentralWidget(self.centralwidget)        self.menubar = QtGui.QMenuBar(Program)        self.menubar.setGeometry(QtCore.QRect(0, 0, 351, 25))        self.menubar.setObjectName(_fromUtf8("menubar"))        self.menuSubmit = QtGui.QMenu(self.menubar)        self.menuSubmit.setObjectName(_fromUtf8("menuSubmit"))        Program.setMenuBar(self.menubar)        self.statusbar = QtGui.QStatusBar(Program)        self.statusbar.setObjectName(_fromUtf8("statusbar"))        Program.setStatusBar(self.statusbar)        self.toolBar = QtGui.QToolBar(Program)        self.toolBar.setObjectName(_fromUtf8("toolBar"))        Program.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)        self.actionSubmit = QtGui.QAction(Program)        self.actionSubmit.setObjectName(_fromUtf8("actionSubmit"))        self.menuSubmit.addAction(self.actionSubmit)        self.menubar.addAction(self.menuSubmit.menuAction())        self.retranslateUi(Program)        QtCore.QMetaObject.connectSlotsByName(Program)    def retranslateUi(self, Program):        Program.setWindowTitle(_translate("Program", "Program", None))        self.label.setText(_translate("Program", "Name", None))        self.pushButton.setText(_translate("Program", "Submit", None))        self.menuSubmit.setTitle(_translate("Program", "Submit", None))        self.toolBar.setWindowTitle(_translate("Program", "toolBar", None))        self.actionSubmit.setText(_translate("Program", "Submit", None))

答案1

小编典典

您正在滥用“ self”参数,因为函数本身应该在类缩进中(因此,它应该是类的方法)或将实例作为参数接收。

在您的代码中,functioni将仅接收信号参数(所有按钮(包括QPushButtons)都具有选中的参数)。这意味着您functioni使用False参数作为调用(单击后QPushButton处于选中状态),并且self实际上是一个布尔变量。请记住,这self只是python中的一个约定,它实际上是一个普通的位置参数,您可以根据需要调用它。

要解决您的问题,functioni只需通过添加正确的缩进(并调用self.functioni信号连接)就可以使函数成为类方法。如果出于任何原因需要将函数保留在类之外,则可以添加文本或类实例作为参数:

    self.pushButton.clicked.connect(lambda checked: functioni(self.le.text())    self.pushButton.clicked.connect(lambda checked: functioni(self))

无关,但重要。请记住,executesqlite的第二个参数必须是可迭代的(元组,列表等)。如果只有一个参数,则可以在关闭括号之前通过添加逗号来获取单个值元组:

cur.execute("INSERT INTO Name (Name) VALUES (?)", (self.le.text(), ))

AttributeError:'NoneType'对象没有属性'text',(xml,python)

AttributeError:'NoneType'对象没有属性'text',(xml,python)

如何解决AttributeError:''NoneType''对象没有属性''text'',(xml,python)?

我有一个xml文件,

<?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
  <edit-config category = "xyz">
    <target category="cooking">
      <author>Giada De Laurentiis</author>
    </target>
 </edit-config>
</rpc>

我要打印作者姓名,我是这样写的,

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
root = tree.parse("test.xml")
print (''Name: '',root.find(''rpc/edit-conf/target/author'').text)

我遇到以下错误,我缺少什么吗?

enter image description here

解决方法

见下文

import xml.etree.ElementTree as ET

xml = ''''''<?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
  <edit-config category = "xyz">
    <target category="cooking">
      <author>Giada De Laurentiis</author>
    </target>
 </edit-config>
</rpc>''''''

root = ET.fromstring(xml)
author = root.find(''.//{urn:ietf:params:xml:ns:netconf:base:1.0}author'')
print(author.text)

输出

Giada De Laurentiis
,

可以通过以下XPATH访问该标签:

a = root.find(''./{urn:ietf:params:xml:ns:netconf:base:1.0}edit-config/{urn:ietf:params:xml:ns:netconf:base:1.0}target/{urn:ietf:params:xml:ns:netconf:base:1.0}author'')
# or ".//{urn:ietf:params:xml:ns:netconf:base:1.0}author" for skip middle sub elements and find subelements,on all levels.      
Out[7]: <Element ''{urn:ietf:params:xml:ns:netconf:base:1.0}author'' at 0x7f01f9c1a220>
print(a.text)
rpc标记中的

xmlns引用XML namespace(用于防止在尝试混合XML时发生冲突),并且在rool元素的XML文件中,您将urn:ietf:params:xml:ns:netconf:base:1.0视为命名空间。 / p>

要逐步找到正确的Xpath,请尝试:

In [1]: root.find(''./'')                                                                                                                                                                      
Out[1]: <Element ''{urn:ietf:params:xml:ns:netconf:base:1.0}edit-config'' at 0x7f01f9c16ef0>

In [2]: root.findall(''./{urn:ietf:params:xml:ns:netconf:base:1.0}edit-config/'')                                                                                                              
Out[2]: [<Element ''{urn:ietf:params:xml:ns:netconf:base:1.0}target'' at 0x7f01fa2a4ea0>]

In [3]: root.findall(''./{urn:ietf:params:xml:ns:netconf:base:1.0}edit-config/{urn:ietf:params:xml:ns:netconf:base:1.0}target/'')                                                              
Out[3]: [<Element ''{urn:ietf:params:xml:ns:netconf:base:1.0}author'' at 0x7f01f9c1a220>]

In [4]: root.findall(''./{urn:ietf:params:xml:ns:netconf:base:1.0}edit-config/{urn:ietf:params:xml:ns:netconf:base:1.0}target/{urn:ietf:params:xml:ns:netconf:base:1.0}author'')               
Out[4]: [<Element ''{urn:ietf:params:xml:ns:netconf:base:1.0}author'' at 0x7f01f9c1a220>]
,

xml标记为<edit-config category = "xyz">

代码正在搜索''/edit-conf/''

使它们相同就可以了

AttributeError:'str'对象没有属性'decode' Python 3和Python 2.7兼容性

AttributeError:'str'对象没有属性'decode' Python 3和Python 2.7兼容性

如何解决AttributeError:''str''对象没有属性''decode'' Python 3和Python 2.7兼容性?

我正在尝试比较两个字符串列表:

text_line = [u''\u2502 id               \u2502 na \u2502 email   \u2502'',u''\u2502                  \u2502 me \u2502         \u2502'']  
print( text_line == [
             "│ id               │ na │ email   │","│                  │ me │         │",])

它发出警告: Unicode警告:Unicode相等比较未能将两个参数都转换为Unicode 并显示 False

如果我在列表中每个字符串的末尾添加 .decode(''utf-8''),则它在Python 2.7中可以正常工作并显示 True :>

print( text_line == [
       "│ id               │ na │ email   │".decode(''utf-8''),"│                  │ me │         │".decode(''utf-8''),])

但它在Python 3.X中不起作用,并出现以下错误:

AttributeError:''str''对象没有属性''decode''

是否有一种适用于Python 2.7和Python 3.X的方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

今天关于Python类继承:AttributeError:'[SubClass]'对象没有属性'xxx'python 类属性继承的讲解已经结束,谢谢您的阅读,如果想了解更多关于AttributeError: 'Class' 对象没有属性 'rep_call'、AttributeError:'bool'对象没有属性'le'— pyqt —将文本放入python变量、AttributeError:'NoneType'对象没有属性'text',(xml,python)、AttributeError:'str'对象没有属性'decode' Python 3和Python 2.7兼容性的相关知识,请在本站搜索。

本文标签: