gpt4 book ai didi

python - 更新 python 构造函数中的 fct

转载 作者:行者123 更新时间:2023-12-01 04:41:28 25 4
gpt4 key购买 nike

我在"Artificial Intelligence: A modern approach"中遇到过代码存储库下面是我以前从未见过的代码:

  def __init__(self, state, parent=None, action=None, path_cost=0):
"Create a search tree Node, derived from a parent by an action."
update(self, state=state, parent=parent, action=action,
path_cost=path_cost, depth=0)
if parent:
self.depth = parent.depth + 1

他们似乎正在使用update函数来重新定义构造函数的参数,以允许使用替代参数。我查遍了代码,没有找到一个名为update的自定义函数。 python 中允许这样做吗?网上没找到。

最佳答案

这不是 Python 的 built-in functions 之一,因为它没有在本地定义或列在:

import math, random, sys, time, bisect, string

(呃!)它必须来自文件中唯一的其他导入:

from utils import *

(这就是为什么 the style guide 说“应该避免通配符导入,因为它们使得命名空间中存在哪些名称变得不清楚”...)。

<小时/>

checkin that file我们发现:

def update(x, **entries):
"""Update a dict; or an object with slots; according to entries.
>>> update({'a': 1}, a=10, b=20)
{'a': 10, 'b': 20}
>>> update(Struct(a=1), a=10, b=20)
Struct(a=10, b=20)
"""
if isinstance(x, dict):
x.update(entries)
else:
x.__dict__.update(entries)
return x
<小时/>

此函数的使用稍微简化了其他情况下的情况:

def __init__(self, state, parent=None, action=None, path_cost=0):
"Create a search tree Node, derived from a parent by an action."
self.state = state
self.parent = parent
self.action = action
self.path_cost = path_cost
self.depth = 0
if parent:
self.depth = parent.depth + 1

关于python - 更新 python 构造函数中的 fct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631351/

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