gpt4 book ai didi

python - 是否有一种 Python 方式来引用我们用(某些)Python 内置类型声明的当前对象(自引用)?

转载 作者:行者123 更新时间:2023-12-03 23:59:18 26 4
gpt4 key购买 nike

使用(某些)Python 内置类型,是否可以引用我们正在声明的对象?“(某些)内置类型”我想到的,例如,序列类型、映射类型或集合类型,显然不是数字类型。

我的意思是,无需自己创建类并添加此功能(无需创建子类)。

因此,类似于以下示例中使用的 this 关键字。

例如,对于“dict” Python 内置类型,类似这样:

a_dictionary = {
"key_1": "value_1",
"key_2": "value_2",
"key_3": this["key_1"] + "_" + this["key_2"] # == "value_1_value_2"
}

甚至:

a_dictionary = {
"sub_dict_1": {
"key_1": "value_1_1",
"key_2": "value_1_2",
"key_3": this["key_1"] + "_" + this["key_2"] # == "value_1_1_value_1_2"
},
"sub_dict_2": {
"key_1": "value_2_1",
"key_2": "value_2_2",
"key_3": this["key_1"] + "_" + this["key_2"] # == "value_2_1_value_2_2"
}
}

我读过:

When doing function chaining in python, is there a way to refer to the "current" object?

What do I do when I need a self referential dictionary?

Reference a dictionary within itself

Self-referencing classes in python?

Is there a way to refer to the current function in python?

Is it possible to access current object while doing list/dict comprehension in Python?

还有其他一些,但它不符合我的问题开始时描述的要求。

非常感谢您的帮助!

最佳答案

Python 无法通过文字或显示来引用正在构造的对象*。您可以(ab)使用 Python 3.8 或更高版本中的赋值表达式来模拟:

a_dictionary = {
"key_1": (x := "value_1"),
"key_2": (y := "value_2"),
"key_3": x + "_" + y
}

这需要提前计划,因为您不是直接引用键值,而是预定义的变量。注意 xy 在赋值给 a_dictionary 后仍然在作用域内,所以这只是一个有问题的等价于

x = "value_1"
y = "value_2"
a_dictionary = {
"key_1": x,
"key_2": y,
"key_3": x + "_" + y
}

自定义类确实更合适:

class Thing:
def __init__(self, v1, v2):
self.key_1 = v1
self.key_2 = v2
self.key_3 = v1 + "_" + v2


a_thing = Thing("value_1", "value_2")

  • 显示是类似于文字的构造,但可以包含非文字引用。例如,列表显示包括 [1, x, y][int(x) for x in foo]

关于python - 是否有一种 Python 方式来引用我们用(某些)Python 内置类型声明的当前对象(自引用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64355923/

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