Когда я пытаюсь вызвать конструктор суперкласса в конструкторе thermo.py (файлы ниже), я получаю следующую ошибку:
Traceback (most recent call last):
File "/var/wheaterstation/scripts/wsControl.py", line 58, in <module>
controller = controller()
File "/var/wheaterstation/scripts/wsControl.py", line 21, in __init__
self.thermo = thermo("Thermometer", logger)
File "/var/wheaterstation/scripts/thermo.py", line 7, in __init__
super(name, logger).__init__()
TypeError: super() argument 1 must be type, not str
Я видел, что в 2.6 эта ошибка часто возникаетвверх, если суперкласс не будет расширять «объект».Я пробовал это, но это не похоже на работу.
wsPart.py:
class wsPart(object):
logger = None
name = ""
def __init__(self, name, logger):
self.logger = logger
self.name = name
self.logger.writeLog(self, "created")
def getName(self):
return self.name
thermo.py:
import os, sys
from wsPart import wsPart
class thermo:
functional = False
file = '/sys/bus/w1/devices/28-00000833e8ff/w1_slave'
def __init__(self, name, logger):
super(name, logger).__init__() ## this calls the wsPart constructor
functional = True
def read(self):
##reads out the file mentioned in line 5 and returns it
fileobject = open(self.file)
filecontent = fileobject.read()
fileobject.close()
self.logger.writeLog(self,"Completed Meassurement")
return filecontent
и часть wsControl.Пи, что имеет значение:
class controller():
name = ""
logger = None
thermo = None
dbConnector = None
def __init__(self):
##THis created the controller and all the other objects
self.name = "Controller"
##Create Objects
self.logger = logger()
self.logger.writeLog(self, "logger created")
self.thermo = thermo("Thermometer", logger)
self.dbConnector = dbConnector("DBConnector",logger)
полный код здесь