请不要将其标记为重复,其他类似问题并未解决我的问题。
这是我的设置
/main.py
/actions/ListitAction.py
/actions/ViewAction.py
Main.py:
from actions import ListitAction, ViewAction
ListitAction.py:
class ListitAction(object):
def __init__(self):
#some init behavior
def build_uri():
return "test.uri"
ViewAction.py
from actions import ListitAction
class ViewAction(ListitAction):
def __init__(self, view_id):
ListitAction.__init__(self)
self.view_id = view_id
def build_uri():
return "test"
运行:
$ python3 main.py
我收到的唯一错误消息是:
Traceback (most recent call last):
File "/home/jlevac/workspace/project/listit.py", line 11, in <module>
from actions import ListitAction, ViewAction, CommentsAction
File "/home/jlevac/workspace/project/actions/ViewAction.py", line 3, in <module>
class ViewAction(ListitAction):
TypeError: module.__init__() takes at most 2 arguments (3 given)
即使我尝试使用python3控制台,也收到了同样的错误消息:
$python3
from actions import ViewAction
我是Python新手,但不是编程新手。我假设我的错误消息与import语句有关,但根据消息,我无法弄清楚它的含义。
由于
答案 0 :(得分:27)
您的导入是错误的,因此您尝试从模块本身继承,而不是从其中定义的类(同名)继承。
from actions import ListitAction
ViewAction.py
中的应为:
from actions.ListitAction import ListitAction
并且类似地,所有其他用途应该切换到from actions.XXX import XXX
的显式导入(由于重复的名称),例如from actions import ListitAction, ViewAction
必须成为两个导入:
from actions.ListitAction import ListitAction
from actions.ViewAction import ViewAction
因为导入的类来自actions
包下的不同模块。
答案 1 :(得分:0)
当你不需要时,你正在通过self
,这就是全部。
编辑:请参阅MSeifert的评论回答,因为我不想窃取内容。
答案 2 :(得分:0)
如果文件位于项目的根目录中,则可以直接输入文件名并导入。
例如,如果文件名是Parent1.py
并且类名是Parent
,那么您将编写
from Parent1 import Parent
例如,如果您的文件Parent1.py
在任何文件夹下,则:
DemoFolder -> Parent1.py- > Parent
(Folder). (File). (Class name)
那你就得写:
from Test.Parent1 import Parent
答案 3 :(得分:-1)
class Student:
# Creating a Class Variables
perc_Raise = 1.05
# Creating a constructor or a special method to initialize values
def __init__(self,firstName,lastName,marks):
self.firstName = firstName
self.lastName = lastName
self.email = firstName + "." + lastName +"@northalley.com"
self.marks = marks
def fullName(self):
return '{} {}'.format(self.firstName,self.lastName)
def apply_raise(self):
self.marks = int(self.marks * self.perc_Raise)
std_1 = Student('Mahesh','Gatta',62)
std_2 = Student('Saran','D',63)
print(std_1.fullName())
print(std_1.marks)
std_1.apply_raise()
print(std_1.marks)
print(std_1.email)
print(std_1.__dict__)
print(std_2.fullName())
print(std_2.marks)
std_2.apply_raise()
print(std_2.marks)
print(std_2.email)
print(std_2.__dict__)
print(Student.__dict__)
class Dumb(Student):
perc_Raise = 1.10
def __init__(self,firstName,lastName,marks,prog_lang):
super().__init__(firstName,lastName,marks)
self.prog_lang = prog_lang
std_1 = Dumb('Suresh','B',51,'Python')
print(std_1.fullName())
print(std_1.marks)
std_1.apply_raise()
print(std_1.marks)
print(std_1.prog_lang)