草庐IT

python - 子类化 Tkinter.Text 以创建自定义小部件

我正在尝试创建一个带有垂直滚动条的文本小部件,同时保留Tkinter.Text中的所有方法/函数。到目前为止,我有以下代码:classScrollableTextWidget(Tkinter.Text):def__init__(self,parent):self.parent=parentself.Frame=ttk.Frame(self.parent)Tkinter.Text.__init__(self,self.Frame,width=1,height=1)self.__initWidget()def__initWidget(self):self.Frame.grid(sticky

Python父类访问子类的类变量

我目前正在尝试在我的Python项目中实现一些继承,但遇到了障碍。我正在尝试创建一个baseParentClass来处理许多子类的基本功能。在这个具体的例子中,我试图用一些属性(设置为0)初始化一个实例,这些属性存储为Child中的类变量列表(称为ATTRS)。我不确定如何在父类中使用这个ATTRS。classParent(object):def__init__():forattrinATTRS:setattr(self,attr,0)classChild(Parent):#classvariableATTRS=[attr1,attr2,attr3]def__init__():supe

python - 未在子类中调用元类

这是一个pythonsession。>>>classZ(type):def__new__(cls,name,bases,attrs):printclsprintnamereturntype(name,bases,attrs)...>>>classY(object):__metaclass__=Z...Y>>>classX(Y):...pass...>>>classW(Y):...__metaclass__=Z...W>>>在我定义了类X之后,我希望为它调用Z._new__,并打印两行,但这并没有发生,(因为元类是继承的?) 最佳答案

Python:float 的子类可以在其构造函数中使用额外的参数吗?

在Python3.4中,我想创建一个float的子类——它可以像float一样用于数学和bool运算,但还有其他的自定义功能,并且可以在初始化时接收控制该功能的参数。(具体来说,我想要一个自定义的__str__和一个在该方法中使用的参数。)但是,我似乎无法让float的子类具有功能性的双参数构造函数。为什么?这仅仅是对扩展内置类型的限制吗?例子:classFoo(float):def__init__(self,value,extra):super().__init__(value)self.extra=extra现在,如果我尝试Foo(1,2),我会得到:TypeError:float

python - Python 何时检查 ABC 的具体子类是否实现了所需的方法?

在尝试编写单元测试来检查抽象基类的具体子类是否真的在实例化时引发TypeError时,如果未实现所需的方法之一,我偶然发现了一些让我想知道何时检查是否需要的东西方法是由具体子类定义的实际执行。到现在为止我会说:在对象实例化时,因为这是运行程序时实际引发异常的时间。但是看看这个片段:importabcclassMyABC(abc.ABC):@abstractmethoddeffoo(self):passMyConcreteSubclass(MyABC):pass正如预期的那样,尝试实例化MyConcreteSubclass会引发TypeError:>>>MyConcreteSubclas

python - 一些 Numpy 函数返回 ndarray 而不是我的子类

我正在继承Numpy的ndarray类,添加一些元数据和其他方法。我正在尝试按照thisarticle中的说明进行操作和thatone.但是,某些Numpy(或Scipy)函数返回基类“ndarray”而不是我的自定义子类。其他Numpy函数确实返回我的子类,我不知道造成这种差异的原因是什么。我怎样才能让所有的numpy/scipy函数返回我的子类?这是我所做的:classSignal(np.ndarray):def__new__(cls,filename):#print"In__new__"#TEMPDEBUGret=np.fromfile(filename,dtype=np.int

python - 让 mypy 接受泛型类型的子类型作为方法参数

我正在尝试将我们在代码库中使用的模式提取到更通用、可重用的结构中。但是,我似乎无法获得与mypy一起使用的通用类型注释。这是我得到的:fromabcimport(ABC,abstractmethod)importasyncioimportcontextlibfromtypingimport(Any,Iterator,Generic,TypeVar)_TMsg=TypeVar('_TMsg')classMsgQueueExposer(ABC,Generic[_TMsg]):@abstractmethoddefsubscribe(self,subscriber:'MsgQueueSubsc

python - 子类化 matplotlib 文本 : manipulate properties of child artist

我正在研究一个用于线对象内联标签的类的实现。为此,我制作了Text类的子类,作为Line2D对象的属性。我的代码previouspost可能有点冗长,所以我在这里隔离了问题:frommatplotlib.textimportTextfrommatplotlibimportpyplotaspltimportnumpyasnpclassLineText(Text):def__init__(self,line,*args,**kwargs):x_pos=line.get_xdata().mean()y_pos=line.get_ydata().mean()Text.__init__(self

python - 一种为类型检查目的子类化 NamedTuple 的方法

我有几个namedtuple共享一些字段。我有一个接受这些元组的函数,并且保证只与共享字段交互。我想在mypy中对这样的代码进行类型检查。代码示例如下:fromtypingimportNamedTupleclassBase(NamedTuple):x:inty:intclassBaseExtended(NamedTuple):x:inty:intz:strdefDoSomething(tuple:Base):returntuple.x+tuple.ybase=Base(3,4)base_extended=BaseExtended(5,6,'foo')DoSomething(base)D

python - 我怎样才能确保我的类的一个方法总是被调用,即使一个子类覆盖了它?

比如我有一个classBaseHandler(object):defprepare(self):self.prepped=1我不希望每个子类化BaseHandler并且还想实现prepare的人都必须记住调用super(SubBaseHandler,self).prepare()有没有一种方法可以确保即使子类也实现了prepare也能运行父类(superclass)方法? 最佳答案 我已经使用元类解决了这个问题。使用元类允许BaseHandler的实现者确保所有子类都将调用父类(superclass)prepare()而无需调整任何