Python 是否有相当于部分类的东西?

2023-12-02

使用“新”样式类(我使用的是 python 3.2)有没有办法将一个类拆分为多个文件?我有一个大类(从面向对象设计的角度来看,考虑到耦合等,它实际上应该是一个类,但是为了便于编辑类,最好将其拆分为几个文件。


如果您的问题确实只是在编辑器中处理一个大类,那么我实际上寻找的第一个解决方案是解决问题的更好方法。第二种解决方案是一个更好的编辑器,最好是具有代码折叠功能的编辑器。

也就是说,有几种方法可以将一个类分解为多个文件。 Python 允许您通过放置一个文件夹来将文件夹用作模块__init__.py然后可以从其他文件导入内容。我们将在每个解决方案中使用此功能。创建一个文件夹,例如bigclass first.

  1. 文件夹里放各种.py最终将组成您的班级的文件。每个应该包含最终类的函数和变量定义,not类。在__init__.py在同一文件夹中写入以下内容以将它们全部连接在一起。

    class Bigclass(object):
    
        from classdef1 import foo, bar, baz, quux
        from classdef2 import thing1, thing2
        from classdef3 import magic, moremagic
        # unfortunately, "from classdefn import *" is an error or warning
    
        num = 42   # add more members here if you like
    

    这样做的好处是您最终会得到直接派生自的单个类object,这在您的继承图中看起来会很漂亮。

  2. 您可以使用多重继承来组合类的各个部分。在您的各个模块中,您将编写一个类定义Bigclass与班级的部分内容。然后在你的__init__.py write:

    import classdef1, classdef2, classdef3
    
    class Bigclass(classdef1.Bigclass, classdef2.Bigclass, classdef3.Bigclass):
        num = 42   # add more members if desired
    
  3. 如果多重继承成为问题,您can使用单一继承:只需让每个类以链式方式从另一个类继承。假设您没有在多个类中定义任何内容,则顺序并不重要。例如,classdef2.py会像:

    import classdef1
    class Bigclass(classdef1.Bigclass):
         # more member defs here
    

    classdef3会进口Bigclass from classdef2并添加到其中,依此类推。你的__init__.py只会导入最后一个:

    from classdef42 import Bigclass
    

我通常更喜欢#1,因为它更明确地说明您要从哪些文件导入哪些成员,但这些解决方案中的任何一个都可以为您工作。

要在任何这些场景中使用该类,您只需导入它即可,使用文件夹名称作为模块名称:from bigclass import Bigclass

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 是否有相当于部分类的东西? 的相关文章

  • tensorflow Protobuf编译问题

    我想为 google 对象检测 API 编译 protobuf 库 我按照官方教程输入protoc object detection protos proto python out 然后我得到的是 object detection prot
  • 如何将本机 popcount 与 numba 一起使用

    我正在使用 numba 0 57 1 我想在我的代码中利用本机 CPU popcount 我现有的代码太慢 因为我需要运行它数亿次 这是一个 MWE import numba as nb nb njit nb uint64 nb uint6
  • 如何使用 django (python) 和 s3 上传文件?

    我正在寻找一种将文件上传到 s3 的方法 我正在使用 django 我目前正在使用亚马逊的 python 库进行上传以及以下代码 View def submitpicture request fuser request session lo
  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • scipy.misc.imshow RuntimeError('无法执行图像视图')

    我正在测试scipy misc imshow https docs scipy org doc scipy 0 15 1 reference generated scipy misc imshow html我得到了运行时错误 无法执行图像查
  • 蜘蛛内的Scrapyd jobid值

    Scrapy 框架 Scrapyd 服务器 我在获取蜘蛛内部的 jobid 值时遇到一些问题 将数据发布到后http localhost 6800 schedule json http localhost 6800 schedule jso
  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • 小数缓存是Python规范中定义的还是一个实现细节?

    Python 似乎有一个所谓的 小数字缓存 用于存储 5 到 256 范围内的数字 我们可以使用以下程序来演示这一点 for i in range 7 258 if id i id i 0 print i is cached else pr
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • Django 未在 404 页面上应用应用程序中的 CSS 文件

    姜戈3 0 8 Python 3 7 x 我有一个包含一些应用程序的 Django 项目 我正在尝试为 400 403 404 500 错误制作一些 默认 错误页面 我已经这样做了 并显示了适当的模板 但没有任何样式或 JS 在 404 错
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • python 脚本中 os.system 的 256 和 512 响应代码是什么

    当我在 python 中使用 os system ping 服务器时 我得到多个响应代码 使用的命令 os system ping q c 30 s SERVERANME 0 在线 256 离线 512 512 是什么意思 Per the
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何使用 pygame.mixer 重复音乐?

    我创建了以下使用 pygame mixer 播放 mp3 音乐的代码 然而 音乐不会重复 有什么想法可以让音乐重复播放吗 这是代码 playlist list playlist append put music here mp3 playl
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 在Python中从CSV文件中获取随机行并找到相应的单词,就像测验一样

    抱歉标题含糊不清 想不出更好的表达方式 我有一个包含德语 英语单词的 CSV 文件 如下所示 Ja Yes Nein No Katze Cat 我希望我的 python 脚本从 CSV 文件中打印一个随机的德语单词 并要求他们输入英语单词

随机推荐

  • 将日期分解为数字

    我很抱歉打扰这个问题 但找不到解决方案 我有一个带有列名称日期的 data frame str df date Factor w 360 levels 1982 11 30 1982 12 31 1 4 7 10 13 16 19 22 2
  • 在 PHP 中使用heredoc语法时遇到问题[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心
  • NativeScript 在 Mac 操作系统上找不到 Android SDK

    我已经安装了 NativeScript 并且尝试这样做tns platform add android但它不起作用 ANDROID HOME 路径是正确的 我已经安装了 SDK API 22 和最新的 和工具 25 0 2 当我跑步时tns
  • Magento - 如何在结帐过程中向订单添加发票费用

    如何使用我的付款模块将发票费用添加到订单中 我想这应该在结帐过程中通过我的付款方式模型完成 也许我应该创建一个项目 产品并将其添加到购物车 报价 订单对象中 但我不知道如何做这些事情 请帮忙 尽管有可能 但这并不适合胆怯的人 以下是向总计区
  • 更改 HREF 后 IE 忘记了 A-Tag 的主机名

    我设置了href 的属性 a 在项目中动态标记 在其他时候 我检查 a 的 DOM 属性称为hostname 以确定它是否是内部链接 基本上 这就是发生的情况 a href my first link MyLink a div div JS
  • Android Studio 3.6.1 与 Gradle 插件版本 3.6.1 和 Gradle 版本 5.6.4 无法正常工作

    我的应用程序运行良好 我刚刚更新了安卓工作室3 6 1 更新 Android Studio 后 我收到此对话框 我将更新 Gradle 插件的版本 如下所示 更新后 我的应用程序崩溃并出现以下错误 java lang NoClassDefF
  • .htaccess 重写规则不会使用 unicode 字符

    我正在使用以下 ModRewrite 来使我的网址看起来更干净 RewriteEngine On RewriteRule a zA Z0 9 index php key 1 它允许使用字母和数字就好 但当我尝试使用 时 它会产生 400 错
  • if 和 elseif 有什么区别?

    这应该是一个简单的问题 我有一个简单的 if else 语句 与此有区别吗
  • JavaFX 2 自定义弹出窗格

    JavaFX 2 颜色选择器有一个按钮 可以弹出颜色选择器窗格 如下所示 我想做类似的事情 因为我希望在单击按钮时弹出一个自定义窗格 并在单击其他内容时消失 在我的例子中是一些图像缩略图 实现这一目标的最佳方法是什么 我应该使用 Conte
  • iOS isKindOfClass 和 isMemberOfClass 之间的区别

    两者有什么区别isKind of aClass AnyClass 和isMember of aClass AnyClass 斯威夫特函数 Objective C 中的原始问题 两者有什么区别isKindOfClass Class aClas
  • datepicker 不会触发 onchange 事件

    我有两个输入日期字段 一个通过 JQuery datepicker 生成日期 我希望第二个通过 onblur 或 onchange 事件从第一个输入中获取值 当我手动输入日期时它工作正常 但一旦通过 datepicker 输入 它不会触发第
  • 调试代码时 Ninject 出现无源可用错误

    我已经使用NuGet安装了最新版本的Ninject v2 2 1 4 然后我创建了自己的 NinjectDependencyResolver 归功于亚当 弗里曼和史蒂夫 桑德森 public class NinjectDependencyR
  • 第一次运行flutter时报错:没有找到pubspec.yaml文件

    我试着跟随Get Stated here https flutter io setup windows And got gt flutter run Error No pubspec yaml file found This command
  • Firebase 数据库规范化

    所以我制作了一个简单的应用程序 一个三轮车巡逻应用程序 您可以通过登录并填写表格来举报鲁莽的三轮车司机 在我们的城市这里没有任何问题 报告表格包含 created at description lat lng plateNumber 到目前
  • 用于按行“连接 If”的 VBA 用户定义函数

    我有一些关于是否为特定站点执行特定 服务 例如鸟类调查 的数据 每项服务都有 是 或 否 E G A 列包含站点名称 例如 A B C D 和 E A1 中标题为 站点名称 A2 中标题为 A 依此类推 B 列 B1 中包含 鸟类调查 然后
  • 捕获分段违规并继续生活

    我正在编写一个程序来检查它自己的地址空间 具体来说 我关心所有 malloc 的数据块 如果有一些系统调用来获取它们的列表 那就太棒了 对于我的应用程序 我不能使用 LD PRELOAD wrap 或任何额外的命令行选项 如果有办法做到这一
  • 使 arraylist 上的 select -unique 返回 arraylist 而不是字符串

    我在下面的类中有三个数组列表 我想让它们保持独特 但是 如果数组列表中只有一项 字符串 并且您使用 select unique 或任何其他方法来实现此目的 它将返回字符串而不是字符串列表 用 包围它也不起作用 因为这会将其转换为数组而不是数
  • Android内存泄漏,没有静态变量

    我是一名初级 Android 开发人员 作为一个实践项目 我正在尝试制作一个可以拍照 将其保存到外部存储并在 ImageView 中显示的活动 几乎一切似乎都正常 但是 我似乎有内存泄漏 当屏幕方向改变时 我相信活动会被破坏 然后重新创建
  • 存储过程中的账本报告逻辑

    我有一个名为 患者分类帐报告 的存储过程 我需要在其中显示患者的日常交易详细信息和余额金额 我正在为您提供以下代码中的一个采样数据 这些数据是如何插入到我的临时表中的sp create table Patient ledger PATIEN
  • Python 是否有相当于部分类的东西?

    使用 新 样式类 我使用的是 python 3 2 有没有办法将一个类拆分为多个文件 我有一个大类 从面向对象设计的角度来看 考虑到耦合等 它实际上应该是一个类 但是为了便于编辑类 最好将其拆分为几个文件 如果您的问题确实只是在编辑器中处理