相关疑难解决方法(0)

理解__get__和__set__以及Python描述符

试图了解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)
  1. 为什么我需要描述符类?请使用此示例或您认为更好的示例进行说明.

  2. 什么是instanceowner这里?(in __get__).所以我的问题是,第三个参数的目的是什么?

  3. 我该怎么称呼/使用这个例子?

python descriptor

287
推荐指数
5
解决办法
10万
查看次数

Python中的str的静态vs实例方法

所以,我已经知道字符串有一个中心方法.

>>> '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)

现在,

  1. 这是一个如何设计python中的类的示例吗?
  2. 为什么类型不同?
  3. 什么是method_descriptor,为什么我要打扰?

谢谢你的回答!

python string

8
推荐指数
3
解决办法
1598
查看次数

标签 统计

python ×2

descriptor ×1

string ×1