【发布时间】:2016-11-30 20:58:39
【问题描述】:
我在打电话
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: 必须使用硬件调用未绑定的方法 gpio_active() 实例作为第一个参数(得到 bool 实例)
我不想传递一个实例——我希望gpio_active() 基本上充当一个函数,但保留对静态类变量的可访问性。我认为这就是@classmethod 的用途。 @staticmethod 出现同样的错误。
我误会了什么?
【问题讨论】:
-
不,
staticmethod您应该不会遇到同样的错误。这就是staticmethod 的描述,它没有隐式地将参数传递给函数。
标签: python class static-methods