假设我有一个类A
class A(object):
def __init__(self, x, y)
self.x = x
self.y = y
然后我定义了一个类B
,该类由A
(而不是以A
为基)和其他参数初始化
class B(object):
def __init__(self, a):
if isinstance(a, A):
self.a = a
问题是,假设A
定义了大量的变量,并且应该经常在B
中引用,那么有没有可能让B
意识到A
中的这些变量,这样在B
中我就可以做到
self.x
而不是
self.a.x
什么?你知道吗
我知道这种变量的自动可继承性有点危险,甚至可能是破坏性的,但是键入许多额外的self.a.x
看起来有点笨拙。可以选择临时或在小代码段中打开此继承应该很有用。你知道吗
编辑
__dict__
基本上带来了一切,包括methods
和functions
,可能只保留数值变量?你知道吗
你可以写:
每当您访问
B
的属性时,它将检查a
是否具有该属性。如果是这样,它将返回该值。否则,它将在B
本身中查找属性。你知道吗(更新为不包括方法):
Python中的最佳实践通常不是用
isinstance()
检查类型,而是使用“duck typing”。我不知道你在做什么的全部细节,所以我不知道你是否有正当的理由需要isinstance()
检查,但是我写了上面的代码没有它。你知道吗这将使用与
A
实例相同的成员名称以及绑定到这些名称的相同值引用来设置B
实例。你知道吗相关问题 更多 >
编程相关推荐