如何调用继承对象上的方法?

2024-06-16 08:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用Pi和Python进行一个项目。我用Java和C#编写了更多代码,在从继承类调用时,调用父类的start方法时遇到了问题。你知道吗

这是我的主要文件:

import picamera
import time
import ConfigParser
import os
import RPi.GPIO as GPIO
from multiprocessing import Process
from datatrack import DataTracker
from datatrack import CameraTracker
camera = picamera.PiCamera()

config = ConfigParser.ConfigParser()
config.read('./config.ini')

tracker = CameraTracker(config)
tracker.start()

然后在datatrack文件中:

import RPi.GPIO as GPIO
import picamera
import time

class DataTracker():
    def __init__(self, config):
        self.buttonPressLast = False;
        self.dataTracking = False;
        self.totalTime = 0.0
        self.timeBetweenData = float(config.get("Data", "TimeBetween")) 

    def loop(self):
        while True:
            self.buttonPress = False
            if(GPIO.input(24) == 0):
                self.buttonPress = True

            if(self.buttonPress == True and self.buttonPressLast == False):
                self.buttonPressLast = True
                self.dataTracking = not self.dataTracking
                if(self.dataTracking):
                    GPIO.output(7, GPIO.LOW)
                else :
                    GPIO.output(7, GPIO.HIGH)
            elif (self.buttonPress == False and self.buttonPressLast == True):
                self.buttonPressLast = False

            if(self.dataTracking and self.totalTime >= self.timeBetweenData):
                self.capture_data()
                self.totalTime = 0.0
            self.totalTime += .1
            time.sleep(.1)
    def setup(self):
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(7, GPIO.OUT)
        GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)

    def capture_data(self):
        print ("Capture data")

    def start(self):
        self.setup()
        GPIO.output(7, GPIO.HIGH)
        self.loop()

def CameraTracker (DataTracker):
    def __init__(self, config):
        super(CameraTracker, self).__init__(config)
        self.camera = False

    def capture_data(self):
        print("Take pictures here")

当主文件中的代码调用DataTracker构造函数时,我就没事了。然而,当我像上面那样切换到CameraTracker时,我在控制台中得到以下输出。你知道吗

Traceback (most recent call last):
File "camera_capture.py", line 17, in <module>
    tracker.start()
AttributeError: 'NoneType' object has no attribute 'start'

对这个问题的任何见解都将不胜感激!你知道吗


Tags: importselfconfigfalsetruegpioifdef