我打电话来
Hardware.gpio_active(True)
这是我的硬件课程:
import os
import glob
import time
import RPi.GPIO as GPIO
#class to manage hardware -- sensors, pumps, etc
class Hardware(object):
#global vars for sensor
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
#global var for program
temp_unit = 'F' #temperature unit, choose C for Celcius or F for F for Farenheit
gpio_pin = 17
#function to enable GPIO
@classmethod
def gpio_active(active):
#system params for sensor
if active is True:
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
GPIO.setmode(GPIO.BCM)
GPIO.setup(Hardware.gpio_pin, GPIO.OUT)
print 'activating GPIO'
else:
print 'deactivating GPIO'
GPIO.cleanup()
我得到这个错误:
TypeError: unbound method gpio_active() must be called with Hardware instance as first argument (got bool instance instead)
我不想传递实例--我希望gpio_active()
基本上充当函数,但保留对静态类变量的可访问性。我以为这就是@classmethod
的目的。我得到了与@staticmethod
相同的错误。你知道吗
我误解了什么?你知道吗
您可以使用
staticmethod
:但是看起来您应该使用
classmethod
,这样您就可以访问该类的其他静态/类方法,或者访问类级变量:然后用
cls.gpio_pin
替换Hardware.gpio_pin
只需将
def gpio_active(active)
替换为def gpio_active(cls, active)
。你知道吗更多关于
@classmethod
的信息,请点击这里:https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods相关问题 更多 >
编程相关推荐