gpt4 book ai didi

python - 如何在实例上调用变量,以便在也是实例的属性上调用变量

转载 作者:行者123 更新时间:2023-12-01 07:43:14 24 4
gpt4 key购买 nike

如果属性的类型为另一个类,如何让 vars 函数返回 class 的属性?

示例:

class User:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
self.geo = GeoInformation()


class GeoInformation:
def __init__(self, city="", state="", zipcode="", country=""):
self.city = city
self.state = state
self.zipcode = zipcode
self.country = country


user = User("John", "Smith")
user.geo.city = "SomeCity"
user.geo.state = "SomeState"
user.geo.zipcode = "SomeZipcode"
user.geo.country = "SomeCountry"

print(vars(user))

我得到的输出:

{'first_name': 'John', 'last_name': 'Smith', 'geo': <class '__main__.GeoInformation'>}

我期望的输出:

{'first_name': 'John', 'last_name': 'Smith', 'geo': {'city':'someCity', 'state':'someState', 'zipcode':'someZipcode', 'country':'someCountry'}}

如果这不是我想要实现的目标的正确方法,请提出更好的方法。

最佳答案

这是一个递归运行 vars 并返回结果的函数:

def recursive_vars(obj):
dct = vars(obj)
for k, v in dct.items():
if hasattr(v, "__dict__"): # check if we can go further recursively
dct[k] = recursive_vars(v)
return dct

现在,任何属于类的值都应该替换为为该类生成的任何 vars() 值,依此类推。

关于python - 如何在实例上调用变量,以便在也是实例的属性上调用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com