我试图了解Python的描述符是什么以及它们对什么有用.但是,我没有成功.我理解它们是如何工作的,但这是我的疑惑.请考虑以下代码:
class Celsius(object):
def __init__(self, value=0.0):
self.value = float(value)
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
self.value = float(value)
class Temperature(object):
celsius = Celsius()
Run Code Online (Sandbox Code Playgroud)
为什么我需要描述符类?请使用此示例或您认为更好的示例进行说明.
什么是instance和owner这里?(in __get__).所以我的问题是,第三个参数的目的是什么?
我该怎么称呼/使用这个例子?
所以,我已经知道字符串有一个中心方法.
>>> 'a'.center(3)
' a '
Run Code Online (Sandbox Code Playgroud)
然后我注意到我可以使用'str'对象做同样的事情,这是一种类型,因为
>>> type(str)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)
使用这个'type'对象,我可以访问字符串方法,就像它们是静态函数一样.
>>> str.center('a',5)
' a '
Run Code Online (Sandbox Code Playgroud)
唉! 这违反了蟒蛇的禅宗.
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
甚至这两种方法的类型也不同.
>>> type(str.center)
<type 'method_descriptor'>
>>> type('Ni!'.center)
<type 'builtin_function_or_method'>
Run Code Online (Sandbox Code Playgroud)
现在,
谢谢你的回答!