栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有相当于分部类的Python?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有相当于分部类的Python?

如果您的问题确实只是在编辑器中使用大型类,那么我真正寻找的第一个解决方案是解决问题的更好方法。第二种解决方案是更好的编辑器,最好是带有代码折叠的编辑器。

也就是说,有几种方法可以将一个类分解为多个文件。Python使您可以通过将文件夹放入

__init__.py
其中来将其用作模块,然后将其从其他文件中导入。我们将在每个解决方案中使用此功能。首先创建一个名为的文件夹
bigclass

  1. 在文件夹中放入
    .py
    最终将构成您的班级的各种文件。每个类都应包含最终类( 而不是 类)的函数和变量定义。在
    __init__.py
    同一文件夹中,写下以下内容,将它们全部组合在一起。
    class Bigclass(object):from classdef1 import foo, bar, baz, quuxfrom classdef2 import thing1, thing2from classdef3 import magic, moremagic# unfortunately, "from classdefn import *" is an error or warningnum = 42   # add more members here if you like

这样的好处是您最终得到了一个直接从派生的类,该类

object
在继承图中看起来不错。

  1. 您可以使用多重继承来组合类的各个部分。在您的各个模块中,您将为该类的

    Bigclass
    各个部分编写一个类定义。然后在您的
    __init__.py
    写道:

    import classdef1, classdef2, classdef3

    class Bigclass(classdef1.Bigclass, classdef2.Bigclass, classdef3.Bigclass):
    num = 42 # add more members if desired

  2. 如果多重继承成为问题,则 可以 使用单一继承:只需让每个类以链式方式从另一个继承即可。假设您没有在一个以上的类中定义任何内容,则顺序无关紧要。例如,

    classdef2.py
    将是:

    import classdef1

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

classdef3
Bigclass
从中导入
classdef2
并添加到其中,依此类推。您
__init__.py
只需导入最后一个:

    from classdef42 import Bigclass

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

要在任何这些情况下使用该类,您都可以使用文件夹名称作为模块名称将其导入:

from bigclass import Bigclass



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号