在python中从模块导入类

在python中从模块导入类,python,class,import,module,Python,Class,Import,Module,如果我有一个名为Physics的模块,里面写了4个类,我想在我的主文件中创建包含所有这些类的对象,我能做到: 导入物理 或者我需要通过以下方式导入每个InIdival类: from Physics import ClassA from Physics import ClassB` 等等?我之所以问这个问题,是因为我尝试只导入模块名,但它会让我从其中一个类实例化一个对象。如果满足以下条件,您可以执行任何操作: from Physics import ClassA , ClassB a =

如果我有一个名为Physics的模块,里面写了4个类,我想在我的主文件中创建包含所有这些类的对象,我能做到:

导入物理

或者我需要通过以下方式导入每个InIdival类:

from Physics import ClassA  
from Physics import ClassB` 

等等?我之所以问这个问题,是因为我尝试只导入模块名,但它会让我从其中一个类实例化一个对象。

如果满足以下条件,您可以执行任何操作:

from Physics import ClassA , ClassB
a = ClassA()
b = ClassB()

标准约定通常比其他约定更喜欢第一种约定,因为它简洁明了,但仍然很明确。

有很多方法可以导入内容。如果您计划大量使用该模块中不常见的名称,您可以这样做

from physics import *

执行此操作时,使用模块中的名称时不需要引用模块名称。例如:

object = ClassA()

如果您只从模块中使用了一些东西,或者模块中有一些具有通用名称的东西(如Sype(从SythOffice),它就像Python的Ext()),您可以考虑只导入整个模块,这样您就可以很容易地判断它是否来自模块。但是,当您这样做时,您必须在每次使用希望从该模块获得的内容时引用模块名称

import sys
sys.exit()
有些模块名较长,每次使用时都要将其键入,这可能会让人恼火。因此,人们通常将导入的模块保存到变量中:

import physics as phy
object = phy.ClassA()

你两者都可以。如果您尝试这样做时遇到问题,请提出更具体的问题。您也可以从物理导入*导入module@JadonErwin使用
import*
将是一个坏主意,如果您只导入模块,那么许多不必要的东西将以这种方式导入。这些类是该模块的属性:
module.Classname()
。事实上,我没有正确地提出我的问题。如果我有一个叫做ModuleA的模块,其中只有一个类,叫做,比如说ClassA。然后我有另一个叫做ModuleX的模块,其中有很多类。对于ModuleX中的一个类,我想将一个实例变量(例如instVarA)初始化为ClassA的对象。在ModuleX中,我可以说import ModuleA,这将允许我说:self.instVarA=ClassA(w,x,y,z)@Tad yes,并且上面的import语句可以工作,只要您没有循环/循环导入(例如ModuleX从ModuleA导入,那么ModuleA也从ModuleX导入)。如果我在导入时只引用模块名称(导入ModuleA),在命名类之前是否需要引用它?即self.instVarA=ModuleA.ClassA(w,x,y,z)?是的,类似于上面的第二个示例。
from physics import ClassA, ClassB, ClassC
object = ClassA()
import sys
sys.exit()
import physics as phy
object = phy.ClassA()