gpt4 book ai didi

python - 我如何使用 '__set__'

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:06 25 4
gpt4 key购买 nike

class A(object):
def __get__(self, instance, owner):#why i can't find argument 'key',where is 'key'
#print ower.instance
print instance,owner
def __set__(self,instance,value):
instance=value

class X(object):
a = A()

xx=X()
xx.a='aaa'
print xx.a#None

最佳答案

海廷格的 HowTo Guide for Descriptors很好地涵盖了这一点。引用它:

Descriptor Protocol

descr.__get__(self, obj, type=None) --> value

descr.__set__(self, obj, value) --> None

descr.__delete__(self, obj) --> None

That is all there is to it.

因此,您可以随意命名参数,但通常没有名为 key 的参数至 __get__ (不知道你为什么要找到它)。

再举一个来自该 URL 的例子:

类 RevealAccess(对象): """设置和返回值的数据描述符 通常并打印一条消息记录他们的访问。 """

def __init__(self, initval=None, name='var'):
self.val = initval
self.name = name

def __get__(self, obj, objtype):
print 'Retrieving', self.name
return self.val

def __set__(self, obj, val):
print 'Updating' , self.name
self.val = val

所以通常你设置self.something__init__ (和/或 __set__ 如果您定义了它),并返回基于 self.something 的内容在__get__ .当然这个例子只是print这是关于获取和设置的“某事”,通常你会做一些更实质性的事情;-)。

关于python - 我如何使用 '__set__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003284/

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