Python类定义——导入语句
我定义了两个类-Person和Manager。经理继承Person类。 尝试导入Person类时出错 代码如下所示 Person.pyPython类定义——导入语句,python,Python,我定义了两个类-Person和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(s
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\Basics>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
C:\Python27\Basics>Manager.py
回溯(最近一次呼叫最后一次):
文件“C:\Python27\Basics\Manager.py”,第1行,在
从基本进口人
ImportError:没有名为Basics的模块
为什么会出现“未找到模块”错误?因为它位于
Person.py
中,而不是Basics.py
from Person import Person
您在名为
Person.py
的文件中定义了Person
类。因此,您应该像这样导入它:
from Person import Person
from person import Person
from .person import Person
请注意,Python中的惯例是使用小写模块名。例如,将Person.py
重命名为Person.py
,将Manager.py
重命名为Manager.py
。然后导入Person
类,如下所示:
from Person import Person
from person import Person
from .person import Person
如果person
模块是一个包的一部分,您可能希望这样导入:
from Person import Person
from person import Person
from .person import Person
这将简化到Python 3的转换。您应该查看如何工作。在您的情况下,您可以使用以下方法解决此问题:
from Person import Person
我看到您来自Java背景(每个文件必须有一个与文件同名的类),但Python模块不是这样工作的
简而言之,当您从命令行运行Python脚本时,正如您所做的那样,它会在当前目录中查找模块(以及其他位置)。当您像以前那样导入(简单)名称时,Python将查找:
Basic.py
的文件;或:\uuuu init\uuuu.py
的文件然后,它将在名为
Person
的模块中查找定义,该定义应为from-Basics-import-Person
。您没有可从中导入的Basics.py模块