Python中如何从嵌套内部类访问外部类的实例属性
解决方案
Python的嵌套类默认不会自动持有外部类的实例,我们需要手动将Pair实例传递给内部History类来获取name属性,按照你期望的调用方式,可参考以下实现:
from statistics import stdev # 假设这是你已有的获取历史数据的方法 def retrieve_history(product, granularity, start, end): # 你的业务实现逻辑 pass class Pair: def __init__(self, base_currency, quote_currency): self.base_currency = base_currency self.quote_currency = quote_currency self.name = f'{base_currency}-{quote_currency}' @property def History(self): # 包装构造器,调用时自动传入当前Pair实例 def create_history(granularity, start, end): return self._History(granularity, start, end, self) return create_history class _History: def __init__(self, granularity, start, end, pair): # 从传入的Pair实例直接获取name属性 self.name = pair.name self.granularity = granularity self.start = start self.end = end def data(self): return retrieve_history(product=self.name, granularity=self.granularity, start=self.start, end=self.end) @property def std_dev(self): # 注意调用实例方法需要加括号 return stdev(self.data())
调用方式和你期望的完全一致:
from datetime import date start_date = date(2024,1,1) end_date = date(2024,6,1) pair = Pair(base_currency='USD', quote_currency='GBP') print(pair.History(granularity='1D', start=start_date, end=end_date).std_dev)
内容的提问来源于stack exchange,提问作者slny06
相关产品推荐
相关产品推荐

