zoukankan      html  css  js  c++  java
  • python的一些内置函数

    最近看到一些人写的文章里有提到python的描述符__get__,__set__,__del__. 这里我也小小研究了一下,除了这3个之外还加上过程中学习的几个,比如__call__等。

    __get__

    object.__get__(self, instance, owner)

     如果一个class定义了__get__,那么它就是一个descriptor。其中的参数instance是访问descriptor的实例,owner是所有者的类。如果不是通过实例而是通过类来访问

    那么instance就为None。

    比如下面的例子:

    class simpleDescriptor(object):
    
       def __get__(self,instance,owner):
           print "call __get__"
           return instance,owner
    
    class A(object):
        foo=simpleDescriptor()
    
    
    print A.foo  # None
    a=A()
    print a.foo  # <__main__.A object at 0x02A299F0>

     输出:

        call __get__
        (None, <class '__main__.A'>)
        call __get__
        (<__main__.A object at 0x02A698F0>, <class '__main__.A'>)

    descriptor自己的实例自己访问自己是不会触发__get__,而会触发__call__,只有descriptor作为其它类的属性才有意义。比如下面的代码:

    class simpleDescriptor(object):
    
       def __get__(self,instance,owner):
           print "call __get__"
           return instance
       def __call__(self,value):
            return value
    
    class A(object):
        foo=simpleDescriptor()
    
    
    s=simpleDescriptor()
    print s        #不会调用__get__
    print s(10)    # 10

     输出:

    <__main__.simpleDescriptor object at 0x02B49A30>
    10

    未完待续。。。。

  • 相关阅读:
    FORM中的get post方法区别
    二叉树优势
    Map 排序
    ajax+MultipartFile上传文件到本地
    阿里巴巴开发手册
    poi快速导入导出excel表格
    String.trim()、.contains()等的作用
    eclipse导入ssm框架的项目,报tomcat无法启动的错误,如下:
    lesson5_oa文件操作
    lesson4_函数
  • 原文地址:https://www.cnblogs.com/streakingBird/p/3939966.html
Copyright © 2011-2022 走看看