gpt4 book ai didi

python - Python 3 中从外部父类的嵌套类继承的嵌套类

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:44 25 4
gpt4 key购买 nike

假设我在 Python 3 中有以下类:

class CoolCar:
@classmethod
def myWheels(cls):
cls.Wheels().out()
class Wheels:
def __init__(self):
self.s = "I'm round!"
def out(self):
print(self.s)

一切都很好。现在我想要一个派生类:

class TerribleTank(CoolCar):
class Wheels(CoolCar.Wheels):
def __init__(self):
self.s = "I'm square!!"

这如我所料:

CoolCar.myWheels()
TerribleTank.myWheels()

但困扰我的是,我必须在TerribleTank 的定义中写两次CoolCar。所以我尝试了这个:

class TerribleTank(CoolCar):
class Wheels(super().Wheels):
def __init__(self):
self.s = "I'm square!!"

这是行不通的。现在,我知道它不起作用,因为 super() 正在寻找第一个参数 self/cls 来开始搜索。

最后我的问题是:是否有类似这样的东西可以工作,这样我就不需要显式地编写第二个 CoolCar

最佳答案

关于:

class CoolCar:
@classmethod
def myWheels(cls):
cls.Wheels().out()
class Wheels:
def __init__(self):
self.s = "I'm round!"
def out(self):
print(self.s)

class TerribleTank(CoolCar):
class Wheels(TerribleTank.Wheels):
def __init__(self):
self.s = "I'm square!!"

>>> TerribleTank.myWheels()
I'm square!!

基本上当你继承CoolCarTerribleTank ,你设置了TerribleTank.Wheels作为对 CoolCar.Wheels 的引用, 直到你在 TerribleTank 中用你自己的新定义遮蔽它定义。所以我相信这符合您没有 CoolCar 的期望TerribleBank 定义中的两次 ☺

HTH

关于python - Python 3 中从外部父类的嵌套类继承的嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com