从两个子类调用时仅实例化一次父类
Posted
技术标签:
【中文标题】从两个子类调用时仅实例化一次父类【英文标题】:Instantiate parent class only once when calling from two child classes 【发布时间】:2021-10-22 03:50:48 【问题描述】:我想知道是否有一种方法,我们可以在从一个子类调用时只实例化一个类,并以某种方式将其缓存并用于第二个子类,而无需实例化父类。
class A:
def __init__(self):
#some huge data stored in self parameters.
class B:
def __init__(self):
A.__init__(self)
class C:
def __init__(self):
A.__init(self)
所以 B 类和 C 类都使用 A 类作为父类,并且 A 类初始化了大量数据,B 类和 C 类都可以使用这些数据。所以我在这里想要实现的是当我实例化 B 类时例如,它实例化类 A 并将所有数据加载到内存中并缓存实例,因此当我立即实例化类 C 时,它会查找该类的现有实例而不再次实例化它。
【问题讨论】:
使用单例方法,它确保只创建一次重对象并作为一个对象存储在内存中,只要需要它就调用它,在 python 中搜索单例 这能回答你的问题吗? Is there a simple, elegant way to define singletons? 或者***.com/questions/6760685/… 【参考方案1】:如何在 B 中实例化 A 并提供一种将数据从 B 传输到外部的方法?见下文:
class A:
def __init__(self):
self.huge_data = [.....]
def data(self):
return self.huge_data
class B:
def __init__(self):
self.a = A()
def pass_data(self)
return a.data()
class C:
def __init__(self):
A.__init(self)
一旦你实例化了B,你就可以使用该方法来访问数据了。
【讨论】:
以上是关于从两个子类调用时仅实例化一次父类的主要内容,如果未能解决你的问题,请参考以下文章