【发布时间】:2021-11-17 16:03:37
【问题描述】:
假设我们有 A 类,它有一个实例 - x。如何制作 A 类的子类,我可以将 x 作为参数传递并获取其所有参数并将其传递给子类对象。确切地说,我想做这样的事情。
class A:
def __init__(self, parameter1, parameter2):
self.parameter1 = parameter1
self.parameter2 = parameter2
class B(A):
def __init__(self, Ainstance, someParameter):
super().__init__(**Ainstance.__dict__)
self.someParameter = someParameter
x = A(parameter1='1', parameter2='2')
x = B(x, someParameter='3')
print(x.parameter1)
print(x.parameter2)
print(x.someParameter)
目标是创建一个类,我可以在其中获取父类对象的所有参数,并添加我自己的属性。上面代码中的问题是我无法对所有类都这样做,因为并非所有类都具有__dict__ 属性。
【问题讨论】:
-
1.当您通过 A 实例时,您不必对所有类都这样做,只对 A 类进行吗? 2. 你为什么这样做?问一个关于如何解决那个问题的问题。这种方式大概不是吧。
-
虽然您在技术上可以做到,但我不明白我们为什么要这样做?这背后的原因是什么?
-
问题是没有A类,有库类。我只是想创建完全相同的对象,但具有一些附加属性。但我无法向库类添加属性。 OOP 对我来说仍然很复杂,所以我想以这种方式解决我的问题,但从表面上看,这不是合适的方式。
-
一个库类?你的意思是你只想从中派生?
-
不完全。我想使用库类的实例作为参数将其参数传递给子类对象。所以我将拥有完全相同的对象,以及其他属性和方法。更准确地说,我使用套接字库的套接字类。当新客户端连接时,我得到一个客户端对象并使用此客户端对象创建一个新对象,但使用用户名、与套接字关联的地址和其他属性/方法。
标签: python oop inheritance