通过创建处理程序避免重复代码 class
Avoiding repeating code by creating a handler class
我是 Python 的新手,正在努力避免一遍又一遍地重复相同的代码。我目前正在使用 Raspberry Pi 在几个不同的 classes 中使用 GPIO,而不是写
servoPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPin,GPIO.IN)
在几个不同的 classes 中,我希望将所有 GPIO 事件捆绑在各种 PinHandler 中..
所以,我为我的处理程序想到了类似的东西 class
import RPi.GPIO as GPIO
class PinHandler:
def __init__(self):
self.servoPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.servoPin,GPIO.IN)
def getPinStatus(self,pin):
return GPIO.input(pin)
def addEventListener(self,functionName)
GPIO.add_event_callback(self.servopin, functionName)
然后在我的其他 classes 中,我只需要输入
from pinHandler.py import PinHandler
import time
pinHandler = PinHandler()
pinHandler.addEventListener(myAwesomeFunction)
def myAwesomeFunction:
pass
这会将回调添加到 pinHandler
范围之外的 myAwesomeFunction
。我走在正确的轨道上还是有更好的方法?
更完整的OOP设计:
import RPi.GPIO as GPIO
class PinHandler:
"""
Base class, wrapts all GPIO tasks
"""
def __init__(self, pin):
self.pin = pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.pin,GPIO.IN)
def getPinStatus(self,pin):
return GPIO.input(pin)
def add_event_callback(self, callback)
GPIO.add_event_callback(self.pin, callback)
from pinHandler.py import PinHandler
class Servo(PinHandler):
"""
Spezialized class, handle all `Servo` related
"""
def __init__(self):
super().__init__(17)
self.add_event_callback(self.event_listener)
def event_listener(self, event):
# handle event
pass
Usage:
servo = Servo()
我是 Python 的新手,正在努力避免一遍又一遍地重复相同的代码。我目前正在使用 Raspberry Pi 在几个不同的 classes 中使用 GPIO,而不是写
servoPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPin,GPIO.IN)
在几个不同的 classes 中,我希望将所有 GPIO 事件捆绑在各种 PinHandler 中..
所以,我为我的处理程序想到了类似的东西 class
import RPi.GPIO as GPIO
class PinHandler:
def __init__(self):
self.servoPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.servoPin,GPIO.IN)
def getPinStatus(self,pin):
return GPIO.input(pin)
def addEventListener(self,functionName)
GPIO.add_event_callback(self.servopin, functionName)
然后在我的其他 classes 中,我只需要输入
from pinHandler.py import PinHandler
import time
pinHandler = PinHandler()
pinHandler.addEventListener(myAwesomeFunction)
def myAwesomeFunction:
pass
这会将回调添加到 pinHandler
范围之外的 myAwesomeFunction
。我走在正确的轨道上还是有更好的方法?
更完整的OOP设计:
import RPi.GPIO as GPIO
class PinHandler:
"""
Base class, wrapts all GPIO tasks
"""
def __init__(self, pin):
self.pin = pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.pin,GPIO.IN)
def getPinStatus(self,pin):
return GPIO.input(pin)
def add_event_callback(self, callback)
GPIO.add_event_callback(self.pin, callback)
from pinHandler.py import PinHandler
class Servo(PinHandler):
"""
Spezialized class, handle all `Servo` related
"""
def __init__(self):
super().__init__(17)
self.add_event_callback(self.event_listener)
def event_listener(self, event):
# handle event
pass
Usage:
servo = Servo()