gpt4 book ai didi

Python OOP 继承类

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:54 24 4
gpt4 key购买 nike

我想实现以下结构:

class Case(nx.Graph):   
def __init__(self, case):
if case == 1:
self = Case1()
if case == 2:
self = Case2()

class Case1(Case):
def __init__(self):
super(Case1, self).__init__()
print "Case1"

class Case2(Case):
def __init__(self):
super(Case2, self).__init__()
print "Case2"

例如,如果我创建以下对象:

graph = Case(1)

应该创建Case1类的新对象。在 Case1 类的 __init__ 中,super() 函数应调用 __init__ 函数networkx.Graph().

如果我运行该代码,结果应该是一个名为“graph”的 networkx.Graph 对象,并且它应该打印 Case1

最佳答案

当你说self = ...时,你只是重新定义了self。你没有改变它。要执行您想要的操作,请使用 __new__ 代替:

class Case(nx.Graph):
def __new__(self, case):
if case == 1:
return Case1()
elif case == 2:
return Case2()
else:
raise ValueError("Invalid argument")

不过,你确实不应该这样做。如果您希望针对不同的情况使用不同的实例,请在创建实例时执行此操作,但类不应依赖其子级才能工作。

关于Python OOP 继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948445/

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