草庐IT

派生词

全部标签

python - 将基类转换为派生类python(或扩展类的更多pythonic方式)

我需要扩展Networkxpython包并向Graph类添加一些方法以满足我的特殊需要我考虑这样做的方法是简单地派生一个新类,例如NewGraph,并添加所需的方法。不过,networkx中还有其他几个函数可以创建和返回Graph对象(例如,生成随机图)。我现在需要将这些Graph对象转换为NewGraph对象,以便我可以使用我的新方法。这样做的最佳方法是什么?还是我应该以完全不同的方式解决问题? 最佳答案 如果您只是添加行为,而不依赖于其他实例值,则可以分配给对象的__class__:frommathimportpiclassCi

python - 在派生类中调用 super() 时,可以传入 self.__class__ 吗?

这个问题在这里已经有了答案:Howtoavoidinfiniterecursionwithsuper()?(1个回答)关闭7年前。我最近发现(通过StackOverflow)调用基类中的方法我应该调用:super([[派生类]],self).[[基类方法]]()没关系,它有效。但是,当我进行更改时,我发现自己经常在类之间复制和粘贴,并且经常忘记将派生类参数修复为super()函数。我想避免必须记住更改派生类参数。我可以改用self.__class__作为super()函数的第一个参数吗?这似乎行得通,但我有充分的理由不应该这样做吗? 最佳答案

python - 在派生类中调用 super() 时,可以传入 self.__class__ 吗?

这个问题在这里已经有了答案:Howtoavoidinfiniterecursionwithsuper()?(1个回答)关闭7年前。我最近发现(通过StackOverflow)调用基类中的方法我应该调用:super([[派生类]],self).[[基类方法]]()没关系,它有效。但是,当我进行更改时,我发现自己经常在类之间复制和粘贴,并且经常忘记将派生类参数修复为super()函数。我想避免必须记住更改派生类参数。我可以改用self.__class__作为super()函数的第一个参数吗?这似乎行得通,但我有充分的理由不应该这样做吗? 最佳答案

python - 如果该属性在派生类中被覆盖,如何调用基类的属性?

我正在将我的一些类从广泛使用getter和setter更改为更Pythonic使用属性。但是现在我被卡住了,因为我以前的一些getter或setter会调用基类的相应方法,然后执行其他操作。但是如何通过属性来实现呢?如何调用父类中的属性getter或setter?当然只是调用属性本身会产生无限递归。classFoo(object):@propertydefbar(self):return5@bar.setterdefbar(self,a):printaclassFooBar(Foo):@propertydefbar(self):#returnthesamevalue#asintheba

python - 如果该属性在派生类中被覆盖,如何调用基类的属性?

我正在将我的一些类从广泛使用getter和setter更改为更Pythonic使用属性。但是现在我被卡住了,因为我以前的一些getter或setter会调用基类的相应方法,然后执行其他操作。但是如何通过属性来实现呢?如何调用父类中的属性getter或setter?当然只是调用属性本身会产生无限递归。classFoo(object):@propertydefbar(self):return5@bar.setterdefbar(self,a):printaclassFooBar(Foo):@propertydefbar(self):#returnthesamevalue#asintheba

python - 如何从基类动态创建派生类

例如我有一个基类如下:classBaseClass(object):def__init__(self,classtype):self._type=classtype我从这个类派生了几个其他类,例如classTestClass(BaseClass):def__init__(self):super(TestClass,self).__init__('Test')classSpecialClass(BaseClass):def__init__(self):super(TestClass,self).__init__('Special')有没有一种很好的Pythonic方法可以通过将新类放入我

python - 如何从基类动态创建派生类

例如我有一个基类如下:classBaseClass(object):def__init__(self,classtype):self._type=classtype我从这个类派生了几个其他类,例如classTestClass(BaseClass):def__init__(self):super(TestClass,self).__init__('Test')classSpecialClass(BaseClass):def__init__(self):super(TestClass,self).__init__('Special')有没有一种很好的Pythonic方法可以通过将新类放入我

java - 无法为 Java 9 中自动生成的模块名称派生模块描述符?

我的项目依赖于NettyEpoll传输。这是依赖关系:io.nettynetty-transport-native-epoll${netty.version}${epoll.os}这个依赖的自动生成的模块名称是:netty.transport.native.epoll由于native关键字在Java9中被保留,我无法将此模块作为依赖项添加到我的项目中:modulecore{requiresnetty.transport.native.epoll;}由于:modulenotfound:netty.transport.另外,jar工具--describe-module报告如下:Unable

java - 无法为 Java 9 中自动生成的模块名称派生模块描述符?

我的项目依赖于NettyEpoll传输。这是依赖关系:io.nettynetty-transport-native-epoll${netty.version}${epoll.os}这个依赖的自动生成的模块名称是:netty.transport.native.epoll由于native关键字在Java9中被保留,我无法将此模块作为依赖项添加到我的项目中:modulecore{requiresnetty.transport.native.epoll;}由于:modulenotfound:netty.transport.另外,jar工具--describe-module报告如下:Unable

java - 禁用派生类上的继承方法

有没有办法在Java派生类中“禁用”从基类继承的方法和/或字段?例如,假设您有一个具有rotate()方法的Shape基类。您还可以从Shape类派生各种类型:Square、Circle、UpwardArrow等。Shape有一个rotate()方法。但是我不希望rotate()对Circle的用户可用,因为它没有意义,或者UpwardArrow的用户,因为我不希望UpwardArrow能够旋转。 最佳答案 我认为这是不可能的。但是,您可以通过从规范中删除rotate()方法来进一步细化Shape类,而是定义另一个名为的Shape子