最近我注意到使用模块是保持python编程整洁的一个好选择。 为了开始,我制作了一个模块(名为,哎呀.py)其中只有一个类,如下所示:
#Module named oop
class Team:
def __init__(self):
print "class Team initialized"
def displayTeam(self):
print "Team name: ", self.name, ",Rank :" , self.rank
def setTeam(self,name,rank):
self.name = name
self.rank = rank
t1 = Team()
t1.setTeam("Man-Utd", 1)
t1.displayTeam()
根据python文档,如果我们想使用模块中的特定属性,那么我们使用<from module_name> import <attribute>
。我只想装“班队”
在另一个python代码(名为oop1.py)中,我简单地导入了上面的模块。哎呀.py如下所述:
^{pr2}$来自终端的python oop1.py
的输出是:
class Team initialized
Team name: Man-Utd ,Rank : 1
通过声明from oop import Team
,我希望只加载类定义。为什么那些额外的行t1 = Team()
t1.setTeam("Man-Utd", 1)
t1.displayTeam()
来自哎呀.py会被处决吗?在
模块中不允许初始化吗? 如果我只需要类的团队结构而不需要其他模块的东西,我该怎么办? 如果我有什么地方错了,请告诉我。在
在python中,模块是对象。为了创建一个模块对象,它所包含的代码将被执行并将找到的绑定作为属性添加到对象中。在
指定要导入的内容并不会改变这样一个事实,即整个模块被执行,之后只有单个绑定被放在
import
的作用域中。在标准做法是,在一个保护后导入时,将您要执行的任何代码放在一个保护之后:
__name__
是一个特殊的全局变量,它仅在执行模块时是__main__
。在导入过程中,它被设置为模块的名称(因此代码不会被执行)。在要了解有关模块的更多信息,请阅读documentation。还有一节解释了上面提到的保护:Executing modules as scripts
是的,您导入的每个模块的代码都将在初始的
import
上运行。(由于Python是一种解释语言,这是预期的行为。)如果模块的某些部分不希望在导入时运行,则仅当文件直接运行时才执行此操作
相关问题 更多 >
编程相关推荐