我已经定义了两个类 - 人和&经理。 Manager继承Person类。 我在尝试导入Person类时遇到错误。
代码如下。
Person.py
class Person:
def __init__(self, name, age, pay=0, job=None):
self.name = name
self.age = age
self.pay = pay
self.job = job
def lastname(self):
return self.name.split()[-1]
def giveraise(self,percent):
#return self.pay *= (1.0 + percent)
self.pay *= (1.0 + percent)
return self.pay
Manager.py
from Basics import Person
class Manager(Person):
def giveRaise(self, percent, bonus=0.1):
self.pay *= (1.0 + percent + bonus)
return self.pay
错误陈述:
C:\ Python27 \基础> Person.py
C:\ Python27 \基础> Manager.py Traceback(最近一次调用最后一次): 文件“C:\ Python27 \ Basics \ Manager.py”,第1行,in 来自Basics import Person ImportError:没有名为Basics的模块
为什么我发现No module found错误?
答案 0 :(得分:6)
您应该查看import and PYTHONPATH的工作原理。在您的情况下,您可以使用以下方法解决此问题:
from Person import Person
我看到你来自Java背景(每个文件必须有一个与文件同名的类),但这不是Python模块的工作方式。
简而言之,当您从命令行运行Python脚本时,它会像您一样在当前目录中查找模块(以及其他位置)。当您导入(简单)名称时,Python会查找:
Basic.py
的文件;或者:__init__.py
。然后它会在名为Person
的模块中查找定义。
答案 1 :(得分:3)
因为它位于Person.py
,而不是Basics.py
。
from Person import Person
答案 2 :(得分:3)
您在名为Person
的文件中定义了Person.py
类。因此,您应该像这样导入它:
from Person import Person
请注意,Python中的常规是具有小写模块名称。例如,将Person.py
重命名为person.py
,将Manager.py
重命名为manager.py
。然后你就像这样导入Person
类:
from person import Person
如果person
模块是包的一部分,您可能想要像这样导入:
from .person import Person
这将简化向Python 3的过渡。
答案 3 :(得分:0)
from Basics import Person
应为from Person import Person
。您没有要从中导入的Basics.py模块。