这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:SubclassingPythontuplewithmultiple__init__arguments我想定义一个继承自tuple的类,并且我希望能够使用tuple不支持的语法来实例化它。举个简单的例子,假设我想定义一个继承自tuple的类MyTuple,我可以通过传递两个值x来实例化它>和y,创建(我的)元组(x,y)。我尝试了以下代码:classMyTuple(tuple):def__init__(self,x,y):print("debugmessage")super().__init__((x,y))但
我需要一个可以收集大量对象并提供有关容器元素的报告功能的容器。本质上,我希望能够做到:magiclistobject=MagicList()magiclistobject.report()###generatesallmyneededinfoaboutthelistcontent所以我想到了对普通列表进行子类化并添加一个report()方法。这样,我就可以使用所有内置的列表功能。classSubClassedList(list):def__init__(self):list.__init__(self)defreport(self):#forgivethesillyexampleif9
我正在尝试子类化numpy的ndarray。在我的子类MyClass中,我添加了一个名为time的字段作为主数据的并行数组。我的目标如下:假设我创建了一个MyClass实例,我们称它为mc。我切片mc,例如mc[2:6],我希望生成的对象不仅包含正确切片的np数组,还包含相应切片的time数组。这是我的尝试:classMyClass(np.ndarray):def__new__(cls,data,time=None):obj=np.asarray(data).view(cls)obj.time=timereturnobjdef__array_finalize__(self,obj):s
我需要创建一个类字典类T的实例t支持都使用dict(**t)“转换”到一个真正的字典,而不是恢复做dict([(k,v)fork,vint.items()])。以及支持倾销JSON使用标准的json库,没有扩展普通的JSON编码器(即没有为default参数提供函数)。如果t是一个普通的dict,两者都可以工作:importjsondefdump(data):print(list(data.items()))try:print('cast:',dict(**data))exceptExceptionase:print('ERROR:',e)try:print('json:',json.
我一直在寻找一些对某些人来说可能相对愚蠢但对我来说非常有趣的东西!:-)在Python3.3中,输入和输出错误已与OSError合并,因此异常类层次结构发生了变化。内置类OSError的一个有趣特性是,它在传递errno和strerror时返回它的子类>>>OSError(2,os.strerror(2))FileNotFoundError(2,'Nosuchfileordirectory')>>>OSError(2,os.strerror(2)).errno2>>>OSError(2,os.strerror(2)).strerror'Nosuchfileordirectory'如您所
我最初在Pythoncapi-sig列表上问过这个问题:Howtopassargumentstotp_newandtp_initfromsubtypes?我正在阅读PythonPEP-253关于子类型化,还有很多关于如何构造类型、调用tp_new和tp_init槽等的好建议。但是,它缺少关于将参数从子类型传递到父类(superclass)型的重要说明。似乎PEP-253根据注释未完成:(XXXThereshouldbeaparagraphortwoaboutargumentpassinghere.)所以,我正在尝试推断一些策略wellknownfromthePythonclassess
代码如下,只是基本结构:classFooType(type):def__new__(cls,name,bases,classdict):instance=type.__new__(cls,name,bases,classdict)#WhatcanIdohere?returninstanceclassFooBase(object,metaclass=FooType):def__init__(self):passclassFoo(FooBase):def__init__(self,name):self.name=namedefmethod1(self):passdefmethod2(sel
我将Flask用于我的pythonwsgi服务器,将sqlalchemy用于我所有的数据库访问。我认为我想在我的应用程序中使用Flask-Sqlalchemy扩展,但我不想使用声明性基类(db.Model),相反,我想使用来自sqlalchemy.ext.declarative的基础。这是否违背了使用扩展程序的全部目的?我的用例:我希望扩展能够帮助我更好地管理session/引擎,但我想单独处理所有模型。我实际上不介意使用扩展,但我想编写严格模型。我正在从一个非Flask应用程序移植代码,并且我将在我进行时将更改推回该项目。例如,如果flask-sqlalchemy允许我在Tablem
我有这个代码:classItem:def__init__(self,a):self.a=aclassSub(Item):def__init__(self,a,b):self.b=bItem.__init__(self,a)classSubSub(Sub):def__init__(self,a,b,c):self.c=cSub.__init__(self,a,b)obj1=Item(1)obj2=Sub(1,2)obj3=SubSub(1,2,3)现在我想检查是否obj2和obj3是作为obj1子类的类的实例以及Item的简单子(monad)类.这是我的理解,我知道我可以使用isinst
我想知道如何调用父类(superclass)中的子类方法。 最佳答案 我相信这是一种经常使用的模式。classA(object):defx(self):self.y()defy(self):print('defaultbehavior')classB(A):defy(self):print('ChildBbehavior')classC(A):defz(self):pass>>>B().x()ChildBbehavior>>>C().x()defaultbehavior它有点像抽象类,但提供了默认行为。但是我记不起模式的名称了。