python - 获取父类
问题描述
我想创建嵌套类。我以位于一个州的城市为例,该州本身属于一个国家。我想从我的 Country 类中添加州,或者从我的 State 类中添加 Cities 等......所以我制作了以下代码:
from typing import Dict
class City:
def __init__(self, **kwargs):
self.name = kwargs['name']
self.inhabitants = {}
def add_inhabitant(self, name: str, age: int) -> None:
kwargs = {'name': name, 'age': age}
self.inhabitants[name] = kwargs
def get_inhabitant(self, name: str) -> Dict:
return self.inhabitants[name]
class State:
def __init__(self, **kwargs):
self.name = kwargs['name']
self.cities = {}
def add_city(self, name: str) -> None:
kwargs = {'name': name}
self.cities[name] = City(**kwargs)
def get_city(self, name: str) -> City:
return self.cities[name]
class Country:
def __init__(self, name):
self.name = name
self.states = {}
def add_state(self, name: str) -> None:
kwargs = {'name': name}
self.states[name] = State(**kwargs)
def get_state(self, name: str) -> State:
return self.states[name]
因此,我可以从我的 Country 类中获得一个州,然后从我的 State 类中获得一个城市,等等......它工作得很好
usa = Country('USA')
usa.add_state('Texas')
texas = usa.get_state('Texas')
texas.add_city('Houston')
houston = texas.get_city('Houston')
houston.add_inhabitant('Jason', 43)
houston.add_inhabitant('Elon', 38)
print(houston.__dict__)
我现在希望从一个城市获得它所在的州以及它所属的国家。我怎样才能做到这一点?
理想情况下,我想要这样的东西:
houston.get_state()
houston.get_country()
解决方案
在每个子项中添加对父项的引用。
class City:
def __init__(self, **kwargs):
self.name = kwargs['name']
self.state = kwargs['state']
self.inhabitants = {}
def add_inhabitant(self, name: str, age: int) -> None:
kwargs = {'name': name, 'age': age}
self.inhabitants[name] = kwargs
def get_inhabitant(self, name: str) -> Dict:
return self.inhabitants[name]
class State:
def __init__(self, **kwargs):
self.name = kwargs['name']
self.country = kwargs['country']
self.cities = {}
def add_city(self, name: str) -> None:
kwargs = {'name': name, 'state': self}
self.cities[name] = City(**kwargs)
def get_city(self, name: str) -> City:
return self.cities[name]
class Country:
def __init__(self, name):
self.name = name
self.states = {}
def add_state(self, name: str) -> None:
kwargs = {'name': name, 'country': self}
self.states[name] = State(**kwargs)
def get_state(self, name: str) -> State:
return self.states[name]
推荐阅读
- centos - 安装 PHP amqp 扩展和 librabbitMQ 的问题
- jupyter-notebook - 如何将kaggle上的Ipython内核转换为pdf并下载?
- javascript - 如何使用 react+firebase 获取令牌?
- php - 如何随着时间的推移积累红利?
- javascript - AJAX (XMLHttpRequest) 进度监控不适用于 Service Worker
- python - 从列表中随机抽样数字,其总和至少需要大于给定的基准
- ibm-cloud - 使用 curl 获取 IAM 令牌失败
- mysql - 如何使用节点流将大数据插入mysql?
- java - java中数组列表的问题(总是将最后一个元素放入数组中)
- tensorflow - LSTM 模型加载产生奇怪的结果,不可序列化的关键字参数错误