首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python构造函数中更新fct

在python构造函数中更新fct
EN

Stack Overflow用户
提问于 2015-06-03 21:46:34
回答 1查看 518关注 0票数 1

我在人工智能:一种现代方法代码存储库中遇到了以下代码,这是我以前从未见过的:

代码语言:javascript
复制
  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的自定义函数。这在蟒蛇里允许吗?我在网上找不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 21:55:17

这不是Python的内建函数之一,因为它不是在本地定义的,也不是在以下内容中列出的:

代码语言:javascript
复制
import math, random, sys, time, bisect, string

(呜!)它一定来自于文件中唯一的其他import

代码语言:javascript
复制
from utils import *

(这就是为什么风格指南说“应该避免通配符导入,因为它们使名称空间中的名称不清楚”.)。

那个档案中我们发现:

代码语言:javascript
复制
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

这个函数的使用稍微简化了原来的样子:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30631351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档