前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python中的嵌套类

python中的嵌套类

作者头像
py3study
发布于 2020-01-08 03:10:58
发布于 2020-01-08 03:10:58
3.7K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下。动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学习。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python

import threading, sys

def nested1(timeout):
    def _1(function):
        def _2(*args,**kw):
            class child(threading.Thread):
                def __init__(self):
                    threading.Thread.__init__(self)
                    self.result=None
                    self.error = None
                    
                    self.setDaemon(True)
                    self.start()

                def run(self):
                    try:
                        self.result = function(*args, **kw)
                    except:
                        self.error = sys.exc_info()

            c = child()
            c.join(timeout)
            if c.isAlive():
                raise TimeoutError, 'took too long'
            if c.error:
                raise c.error[0], c.error[1]
            return c.result
        return _2
    return _1
def test(a, b):
    for i in xrange(100000):
        a = a+b
    return a


if __name__ == '__main__':
    nested1 = nested1(2)
    nested2 = nested1(test)
    print nested2(2,3)

    a =  nested2.child()
    print a

上面是一个借鉴web.py框架中的一个例子,下面print a部分是我的测试,发现函数对象不能引用内层的类,这里的实现可以发现比独立写多个函数和类减少很多代码

再看个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python

import os, sys

class parent:
    def __init__(self):
        self.name = 'parent'

    def getName(self):
        print self.name

    class child:
        def __init__(self):
            self.name = 'child'

        def getName(self):
            print self.name


if __name__ == '__main__':
    child =  parent.child()
    child.getName()

这里从父类引用内部类,后面部分还可以这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == '__main__':
    p = parent()
    p.getName()
    c =  p.child()
    c.getName()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
py基础---多线程、多进程、协程
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程中并发执行不同的任务。
py3study
2020/01/16
6600
py基础---多线程、多进程、协程
python中callback_python安装后怎么打开
刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题,但是随着逐渐地深入,我们会发现有很多情况下简单的异常处理已经无法解决问题了,如下代码,单纯的打印异常所能提供的信息会非常有限。
全栈程序员站长
2022/11/16
5910
用Python实现一个简单的线程池
在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些 很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。
py3study
2020/01/09
7520
Python super()方法、多继承以及MRO顺序
在这上面的代码中,我使用FatFather.__init__(self,name)直接调用父类的方法。 运行结果如下:
Devops海洋的渔夫
2019/05/31
1.6K0
python(五)
创建线程对象以后,可以调用它的 start()方法来启动,该方法自动调用该类对象的 run()方法。
赤蓝紫
2023/01/02
2360
python(五)
Python使用Paramiko实现SSH管理
paramiko 是一个用于在Python中实现SSHv2协议的库,它支持对远程服务器进行加密的通信。目前该模块支持所有平台架构且自身遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,你可以在Python中实现SSH客户端和服务器,并进行安全的文件传输和远程命令执行。
王瑞MVP
2023/11/24
3800
python—多线程
  线程时应用程序中工作的最小单位,python中提供了threading模块来对多线程操作,一般多核cpu采用多进程方式,单核才采用多线程方式
py3study
2020/01/06
5540
python 类
首先super,我们都知道他的意思是继承父类的含义,但是python中继承父类的实现可以直接再括号中写例如ChildA和childB,这两个是一样的
Tim在路上
2020/08/05
1.1K0
关于Java里面的嵌套类,你了解多少?
最近在看《Core Java for the Impatient》这本书,当然为了方便我看的是英文电子版的PDF格式(有需要的朋友,可以后台留言给我),期间又重新认识或升级了不少Java相关的知识,今天我们来聊一聊Java里面的内嵌类,又称嵌套类。
我是攻城师
2018/07/23
5030
关于Java里面的嵌套类,你了解多少?
关于Java里面的嵌套类,你了解多少?
最近在看《Core Java for the Impatient》这本书,当然为了方便我看的是英文电子版的PDF格式(有需要的朋友,可以后台留言给我),期间又重新认识或升级了不少Java相关的知识,今天我们来聊一聊Java里面的内嵌类,又称嵌套类。
我是攻城师
2018/06/02
1K0
Python之并发请求
在服务端的测试中,除了考虑服务端的业务功能和API的各个兼容性外,还需要考虑的就是服务端的稳定性以及高并发请求下服务端的承载能力。关于并发多少的数量以及具体的响应时间要求,其实每个产品的形态都是不一样的,很难使用标准的说法来进行统一。这具体看被测试的组件它所面对的业务形态,如果业务形态是是很少使用的产品,其实对性能也就没什么要求了。所以关于这点还是得根据被测组件的架构设计,承载的量以及业务目标。本文章主要分享使用Python语言编写一个简单的并发请求的测试代码。
无涯WuYa
2020/11/09
4.5K0
Python之并发请求
Google 开源的 Python 命令行库:深入 fire(二)
在上一篇文章中我们介绍了 fire 的子命令、嵌套命令和属性访问等内容,今天我们将继续深入了解 fire 的其他功能。
HelloGitHub
2021/05/14
3500
Python 数据结构 tree 树
除了已经存在name, child, parent属性外,我们可以自定义其他属性方便操作。
py3study
2020/01/08
4.5K1
python 中的嵌套类
能够看到 类中 又定义了 类 ,这种情况我们称之为嵌套类 。给一个简单 demo 来认识嵌套类 。
py3study
2020/01/10
4.2K0
python 分析日志并发上报
分析日志并发上报 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/11/6 下午4:42 # @Author : BrownWang # @Email : 277215243@qq.com # @File : logtotnm2.py # @Software: PyCharm import os import datetime import threading import sys rootpath='/kkk/l
葫芦
2019/04/17
9120
8.0 Python 使用进程与线程
python 进程与线程是并发编程的两种常见方式。进程是操作系统中的一个基本概念,表示程序在操作系统中的一次执行过程,拥有独立的地址空间、资源、优先级等属性。线程是进程中的一条执行路径,可以看做是轻量级的进程,与同一个进程中的其他线程共享相同的地址空间和资源。
王瑞MVP
2023/08/14
3400
Java 的嵌套类(内部类和静态嵌套类)
Java允许在一个类定义另一个类,称为嵌套类 (Nested Classes),类似下面的形式
用户7886150
2021/04/26
9350
Python:线程、进程与协程(2)—
    上一篇博文介绍了Python中线程、进程与协程的基本概念,通过这几天的学习总结,下面来讲讲Python的threading模块。首先来看看threading模块有哪些方法和类吧。
py3study
2020/01/07
5830
Python:线程、进程与协程(2)—
Python 命令行工具:Fire (已验证)
在上述例子中定义一个 hello 函数,它接受 name 参数,并且有默认值 "World"。使用 fire.Fire(hello) 即可非常简单快速地实现命令功能,这个命令行就接受 --name 选项,不提供时使用默认值 "World",提供时就按提供的值来。
用户10002156
2022/09/05
5990
Python 线程&进程与协程
线程是进程的执行单元,对于大多数程序来说,可能只有一个主线程,但是为了能够提高效率,有些程序会采用多线程,在系统中所有的线程看起来都是同时执行的,例如,现在的多线程网络下载程序中,就使用了这种线程并发的特性,程序将欲下载的文件分成多个部分,然后同时进行下载,从而加快速度.虽然线程并不是一个容易掌握和使用的概念,但是如果运用得当,还是可以获得很不错的性能的.
王瑞MVP
2022/12/28
7770
相关推荐
py基础---多线程、多进程、协程
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验