使用“新”样式类(我在python
3.2中)是否可以将一个类拆分为多个文件?我有一个大类(从面向对象的设计角度来看,考虑耦合等等,它实际上应该是一个类,但是为了方便编辑类,最好分割几个文件。
如果您的问题确实只是在编辑器中使用大型类,那么我真正寻找的第一个解决方案是解决问题的更好方法。第二种解决方案是更好的编辑器,最好是带有代码折叠的编辑器。
也就是说,有几种方法可以将一个类分解为多个文件。Python使您可以通过将文件夹放入__init__.py
其中来将其用作模块,然后将其从其他文件中导入。我们将在每个解决方案中使用此功能。首先创建一个名为的文件夹bigclass
。
.py
最终将构成您的班级的各种文件。每个类都应包含最终类( 而不是 类)的函数和变量定义。在__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
在继承图中看起来不错。
您可以使用多重继承来组合类的各个部分。在您的各个模块中,您将为该类的Bigclass
各个部分编写一个类定义。然后在您的__init__.py
写道:
import classdef1, classdef2, classdef3
class Bigclass(classdef1.Bigclass, classdef2.Bigclass, classdef3.Bigclass):
num = 42 # add more members if desired
如果多重继承成为问题,则 可以 使用单一继承:只需让每个类以链式方式从另一个继承即可。假设您没有在一个以上的类中定义任何内容,则顺序无关紧要。例如,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
我知道你可以通过从批处理文件或类似文件中调用jar来将它作为Windows服务运行,而且我知道当你使用一个应用服务器,如WAS或Glassfish时,你有JVMS本身正在“运行”。但除非我弄错了,否则这些不一定是“服务”。也就是说,在没有任何用户输入的情况下执行的进程。根据我的理解,你仍然需要调用JVM来让它执行一个进程(如果我错了,请随时纠正我)。但我一直很好奇什么是Windows服务的Java
问题内容: 在Spring 3.0中有一个注释。它允许直接在Java代码中定义Spring bean。在浏览Spring参考时,我发现了使用此批注的两种不同方法-带注释的内部类和没有此注释的内部类。 本节包含以下代码: 在这里我们可以看到一段非常相似的代码,但是现在就在这里: 参考的前一部分包含以下说明: Spring组件中的@Bean方法的处理方式与Spring @Configuration类中
我只是在尝试内部类,遇到了这个想法,即拥有本地但静态的内部类…好吧,我在静态方法中制作了一个内部类…就这么简单…这是我做的例子 这不会给出任何编译错误。 我知道如何访问静态方法m。但是我想知道是否有办法从外部类访问本地类 LocalStatic.好吧,根据我的理解,我们无法访问方法内部的东西,对吧?因此,我无法从类外部访问LocalStatic或该本地类内的任何方法或属性,只想确保..
考拉提供了一种非常简单的方法,可以在Facebook的用户墙上发布状态更新。我想知道是否存在一个 gem 来对 Twitter 做类似的事情:换句话说,我正在寻找一个 gem,可以轻松地让您的应用程序为用户发布一些东西。 非常感谢任何建议。
问题内容: 我知道(其中e是一个异常)会打印发生的异常,但是,我试图找到与Java等效的python,它可以将异常确切地跟踪到发生的那一行,并打印出整个轨迹。 谁能告诉我Python 的等效功能吗? 问题答案: 在块内执行此操作时,它将自动使用当前异常。有关更多信息,请参见http://docs.python.org/library/traceback.html。
我使用github的时间相对较短,并且一直使用客户端执行提交和拉取。我决定从昨天的git bash开始尝试它,并且我成功地创建了一个新的repo和提交的文件。 今天,我从另一台计算机上对存储库进行了更改,我提交了更改,现在我回到家里,执行了来更新我的本地版本,我得到了以下信息: 这次回购的唯一贡献者是我,没有分支(只有一个主人)。我在windows上执行了git Bash中的pull: 我做错了什