Python PyQt QTableWidgetItem子类的Init方法

Python PyQt QTableWidgetItem子类的Init方法,python,pyqt,Python,Pyqt,我想对QTableWidgetItem进行子类化,这样子类就可以有一个额外的“id”属性 不幸的是,我有点困惑,因为PyQt文档显示了四种不同的init方法 要为我的“QTableWidgetItemWithId”子类创建自己的init方法(该子类还将传入一个额外的'id'参数),我应该使用*args、**kwargs吗?如果是,正确的语法是什么 非常感谢我相信您可以为您的小部件项定义尽可能多的构造函数。重写的基本方法是 Qt有一个演示项目,其中有一个自定义的QTableWidgetItem子体

我想对QTableWidgetItem进行子类化,这样子类就可以有一个额外的“id”属性

不幸的是,我有点困惑,因为PyQt文档显示了四种不同的init方法

要为我的“QTableWidgetItemWithId”子类创建自己的init方法(该子类还将传入一个额外的'id'参数),我应该使用*args、**kwargs吗?如果是,正确的语法是什么


非常感谢

我相信您可以为您的小部件项定义尽可能多的构造函数。重写的基本方法是

Qt有一个演示项目,其中有一个自定义的QTableWidgetItem子体:其中定义了自定义的QTableWidgetItem:


希望这有帮助,关于

< P>我会说这取决于你的品味和你认为可读的东西,以及你想保持你的子类的灵活性。 您可以向构造函数添加任何需要的内容,只需将所需内容交给QTableWidgetItem的构造函数即可。有很多方法可以做到这一点。我个人尽可能避免使用*args和**kwargs

from PyQt4.QtGui import QTableWidgetItem

class ATableWidgetItem(QTableWidgetItem):

    def __init__(self, id, *args, **kwargs):
        super(ATableWidgetItem, self).__init__(*args, **kwargs)
        self.id = id

a = ATableWidgetItem(0)
b = ATableWidgetItem(0, QTableWidgetItem.UserType)
c = ATableWidgetItem(0, "text", type=QTableWidgetItem.UserType) 

class AnotherTableWidgetItem(QTableWidgetItem):

    def __init__(self, id):
        super(AnotherTableWidgetItem, self).__init__()
        self.id = id

d = AnotherTableWidgetItem(0)

class YetAnotherTableWidgetItem(QTableWidgetItem):

    def __init__(self, id, text="", type=QTableWidgetItem.Type):
        super(YetAnotherTableWidgetItem, self).__init__(text, type)
        self.id = id

e = YetAnotherTableWidgetItem(0)
f = YetAnotherTableWidgetItem(0, "Hello")
g = YetAnotherTableWidgetItem(0, "Hello", QTableWidgetItem.UserType)  

谢谢我来看看。