繁体   English   中英

您可以从该字典中的 function 访问 python 字典键的值吗?

[英]Can you access a python dictionary key's value from a function in that dictionary?

我知道如何将 function 添加到 python 字典中:

def burn(theName):
        return theName + ' is burning'

kitchen = {'name': 'The Kitchen', 'burn_it': burn}
    
print(kitchen['burn_it'](kitchen['name']))

### output: "the Kitchen is burning"

但是有没有办法引用字典自己的“名称”值而不必专门命名字典本身? 引用字典本身?

考虑到其他语言,我在想可能会有类似的东西

print(kitchen['burn_it'](__self__['name']))

或者

print(kitchen['burn_it'](__this__['name']))

function 可以访问它所在字典的“名称”键。

我用谷歌搜索了很多,但我一直在寻找想要这样做的人:

kitchen = {'name': 'Kitchen', 'fullname': 'The ' + ['name']}

他们在完成初始化之前尝试访问字典键的位置。

TIA

您无法知道哪个 object 引用了 function。

一个简单的例子,如下图:

def burn(theName):
        return theName + ' is burning'

kitchen = {'name': 'The Kitchen', 'burn_it': burn}
garage = {'name': 'The Garage', 'burn_it': burn}

kitchengarage都引用了burn ,它怎么能“知道”哪个字典引用它?

id(kitchen['burn_it']) == id(garage['burn_it'])
# True

您可以做的(如果您不想要自定义对象)是使用 function:

def action(d):
    return d['burn_it'](d['name'])

action(kitchen)
# 'The Kitchen is burning'

action(garage)
# 'The Garage is burning'

使用自定义 object:

class CustomDict(dict):
    def __init__(self, *arg, **kwargs):
        super().__init__(*arg, **kwargs)
        
    def action(self):
        return self['burn_it'](self['name'])
    
kitchen = CustomDict({'name': 'The Kitchen', 'burn_it': burn})

kitchen.action()
# 'The Kitchen is burning'

您可以使用自定义 class 扩展dict object,如下所示:

class MyDict(dict):
    def __init__(self, *args, **kwargs):
        self["burn_it"] = self.burn
        super().__init__(*args, **kwargs)
        
    def burn(self):
        return self["name"] + " is burning"

kitchen = MyDict({'name': 'The Kitchen'})
    
print(kitchen['burn_it']()) # The Kitchen is burning
print(kitchen.burn())       # The Kitchen is burning

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM