【问题标题】:'from file import class' tries to import other classes as well“从文件导入类”也尝试导入其他类
【发布时间】:2020-07-16 17:53:59
【问题描述】:

我正在尝试通过制作游戏来学习 python,并且我正在尝试将部队类从我的 d5 游戏文件导入到当前文件中。这个类只有变量,我想在两个文件中都使用它们:

import pygame as pg
import random as rd
import sys
sys.path.append('C:/Users/hornu/OneDrive/Dungeon')
from d5 import troops

这是它应该导入的类:

class troops:

    Goblins=[3,0,7,1,'small','living',['scout'],False,['Goblin','Goblins']]
    Skeletons=[6,4,3,2,'normal','undead',[None],False,['Skeleton','Skeletons']]
    Ogres=[9,0,19,3,'large','living',[None],False,['Ogre','Ogres']]
    Demons=[10,2,13,3,'normal','magical',[None],False,['Demon','Demons']]
    Bosses=[20,3,35,5,'large','living',[None],False,['Boss','Bosses']]

    Peasants=[1,0,9,1,'normal','undead',[None],False,['Peasant','Peasants']]
    Militia=[4,1,9,2,'normal','living',[None],False,['Militiaman','Militiamen']]
    Squires=[6,1,12,3,'normal','living',['scout'],False,['Squire','Squires']]
    Knights=[10,3,15,3,'normal','living',[None],False,['Knight','Knights']]
    Paladins=[15,3,15,4,'normal','living',[None],False,['Paladin','Paladins']]

我的问题是,在导入了部队类之后,它继续从文件中导入其他类以及进入第二个文件中声明的导入,直到它到达一个无法导入的类(因为它在第三个文件中,我没有给出路径),然后它退出并出现错误。据我所知,我想要的类被正确导入,我只是不明白为什么它继续导入其他东西。 我敢肯定,我还没有完全理解导入是如何工作的,但它继续进行似乎很奇怪。我怎样才能让它只导入单个类并停止?还是我应该为此使用完全不同的方法?

谢谢!

【问题讨论】:

  • 当你导入一个类时,所有从这个类所在的文件中导入的东西都会被执行。例如,如果我的班级x(即x.py)需要os 模块才能工作(所以x.py 中有import os),那么在我运行from x import x 之后,import os 将被执行.
  • 试试答案[现在编辑]
  • @Rafaó 好的,我理解那部分,但我可以绕过它。然而,真正的问题是其他不相关的类也从文件中导入,这就是它失败的地方。我不明白为什么要导入其他类?

标签: python class import


【解决方案1】:

当您想从脚本中导入特定内容时,对于 Function 而不是 Class,导入效果更好。所以尝试使用:

def troops():

    return [[3,0,7,1,'small','living',['scout'],False,['Goblin','Goblins']]
    ,[6,4,3,2,'normal','undead',[None],False,['Skeleton','Skeletons']]
    ,[9,0,19,3,'large','living',[None],False,['Ogre','Ogres']]
    ,[10,2,13,3,'normal','magical',[None],False,['Demon','Demons']]
    ,[20,3,35,5,'large','living',[None],False,['Boss','Bosses']]
    ,[1,0,9,1,'normal','undead',[None],False,['Peasant','Peasants']]
    ,[4,1,9,2,'normal','living',[None],False,['Militiaman','Militiamen']]
    ,[6,1,12,3,'normal','living',['scout'],False,['Squire','Squires']]
    ,[10,3,15,3,'normal','living',[None],False,['Knight','Knights']]
    ,[15,3,15,4,'normal','living',[None],False,['Paladin','Paladins']]]

现在使用:

from d5 import troops
Goblins,Skeletons,Ogres,Demons,Bosses,Peasants,Militia,Squires,Knights,Paladins=troops()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 2019-04-06
    • 1970-01-01
    • 2021-03-17
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多