文档章节

python __xx__

c
 cics
发布于 2016/10/14 11:52
字数 466
阅读 5
收藏 0
点赞 0
评论 0

__slots__ 

限定对象绑定

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class TestCls(object):

    __slots__ = ('func1', 'func2')  #限制实例只能绑定func1, func2

def func3():
    print 's'

def func4(self):
    print 'func4'

if __name__ == '__main__':
    #实例绑定
    obj = TestCls()
    #obj.func3 = func3
    #obj.func3()
    #AttributeError: 'TestCls' object has no attribute 'func3'

    #类绑定
    TestCls.func4 = func4  #绑定之后所有的实例都可以使用,包括绑定之前生成的实例
    obj2 = TestCls()
    obj2.func4()
    obj.func4()
    #print func4

__all__

模块限定数据对象

#__init__.py

from mod1 import Mod1
from mod2 import Mod2
from mod3 import Mod3

__all__ = ['Mod1', 'Mod2']

#只能导入Mod1, Mod2

__str__(), __repr__()

返回显示字符串

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class TestCls(object):
    def __str__(self):
        return 'test cls str'

    __repr__ = __str__


if __name__ == '__main__':
    testCls = TestCls()
    print testCls  #使用__str__
    
    #调试输入testCls 直接显示test cls str。使用__repr__

__iter__

类迭代,实现__iter__, next()函数

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class TestCls(object):
    def __init__(self):
        self.a = 1
        self.alist = [1, 2, 3, 4, 5]

    def __iter__(self):
        return self  #迭代器指针

    def next(self):
        if self.a > 10:
            raise StopIteration()
        self.a += 1
        return self.a


if __name__ == '__main__':
    testCls = TestCls()
    for n in testCls.alist:
        print testCls.next()

    #可以直接遍历实例
    
    for iter in testCls:
        pass 
    

__getattr__

调用不存在时会调用此函数

可以用来动态设置成员

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class TestCls(object):
    def __init__(self):
        self.a = 1


    def __getattr__(self, item):

        setattr(self, item, 3)
        return getattr(self, item)


if __name__ == '__main__':
    testCls = TestCls()
    print testCls.func


__setattr__

类中实现了此方法,在绑定属性时会自动调用此方法

#!/usr/bin/env python
# -*- coding:utf-8 -*-



class TestCls(object):

    def __init__(self):
        self.id = 3   #转入调用__setattr__

    def __setattr__(self, key, value):
        """
        绑定属性时调用此方法
        """
        #self.name = value  #不能使用self.attr方式,会造成递归调用__setattr__

        self.__dict__[key] = value
        object.__setattr__(self, key, value)


if __name__ == '__main__':
    testCls = TestCls()
    testCls.name = ''  #转入调用__setattr__



__call__

实现实例当作函数调用

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class TestCls(object):
    def __init__(self):
        self.a = 1

    def __getattr__(self, item):
        return TestCls()

        setattr(self, item, 3)
        return getattr(self, item)

    def __call__(self, *args, **kwargs):
        return args


if __name__ == '__main__':
    testCls = TestCls()
    print testCls(1,2,3)


 

© 著作权归作者所有

共有 人打赏支持
c
粉丝 0
博文 63
码字总数 5770
作品 0
广州
程序员
CentOS 6.4下安装Django

Django是一个基于python的网站开发框架,笔者学过了python的基本知识,对用python进行网站开发颇有兴趣。于是想安装一个在本地研究一下。 笔者本地操作系统是:CentOS 6.4,Linux内核:2.6.3...

临峰不畏
2014/06/08
0
0
学习笔记(11月07日)--类

四周二次课(11月7日) 一、 类的重写 1.1 重写一般方法 class A: def hello(self): print('Hello,i am A.')class B(A): passa = A()b = B()a.hello()b.hello() 结果: Hello,i am A.Hello,i......

wanyang_wanyang
07/03
0
0
Python 用于网站抓取 登录 发布的模块介绍

由于目前的Web开发中AJAX、Javascript、CSS的大量使用,一些网站上的重要数据是由Ajax或Javascript动态生成的,并不能直接通过解析html页面内容就能获得(例如采用mechanize、lxml、Beautif...

shaohan
2014/03/20
0
0
小小树莓派鉴黄初体验 OpenNSFW on RPi

OpenNSFW是雅虎数年前已经训练好的一个鉴黄模型(是的只是模型而已,素材请自行解决)。既然已经在小树莓派上搭建好了Caffe,那么何不试试基于Caffe的鉴黄模型? Caffe环境 关于树莓派(64位...

煎鱼不可能有BUG
05/21
0
0
Python str() 引发的 UnicodeEncodeError

起因 众所周知,Python 2 中的 UnicodeEncodeError 与 UnicodeDecodeError 是比较棘手的问题,有时候遇到这类问题的发生,总是一头雾水,感觉莫名其妙。甚至,《Fluent Python》的作者还提出...

hezhiming
03/06
0
0
ubuntu忘记进程号如何停止进程

首先查出该指令执行的所有进程 ps aux|grep xx 例:假如我要查出所有用python运行的程序进程 ps aux|grep python 然后查出来之后,再去查看里面的不用进程号对应的文件名,然后删除...

疯子张
2014/08/22
0
0
Python基础班每日整理(一)

01_Linux基础 1.操作系统的作用? 操作系统是配置在计算机硬件上的第一层软件,主要作用是管理好硬件设备。 2.Linux中根目录和家目录分别用什么表示? /表示根目录、~表示家目录 3.Linux中相...

我是小谷粒
06/28
0
0
python 学习笔记(摘自《Python基础教程第2版》)

这里有一篇很详细的, http://www.worldhello.net/doc/python/python.mm.htm 以下是我的笔记 尽量使用 import, 而不使用 from xx import xx 每个包必须包含一个名为 init.py 的文件,以区分正常...

sailtseng
2012/06/07
0
2
Python类的重写和私有变量

Python类的重写和私有变量 1、 类的重写 如果子类没有定义init()方法,子类初始化的时候就会调用父类的方法,但是当子类定义了init()方法,子类就不会调用父类的init()方法, class ren(obje...

peizh
2017/11/07
0
0
转载:唐磊的个人博客《python中decorator详解》【转注:深入浅出清晰明了】

转载请注明来源:唐磊的个人博客《python中decorator详解》 前面写python的AOP解决方案时提到了decorator,这篇文章就详细的来整理下python的装饰器——decorator。 python中的函数即objects...

laugh2last
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
34分钟前
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
0
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部