Raspberry Pi的Python脚本未正常运行

Raspberry Pi的Python脚本未正常运行,python,linux,raspberry-pi,new-operator,Python,Linux,Raspberry Pi,New Operator,前几天我写的python脚本有点麻烦。这个脚本是为我的rasbperry pi编写的,它有一个连接到GPIO引脚的数字接口。此脚本的目的是测试并查看它是否将解锁机电锁5秒。虽然当我运行脚本时什么都没发生。没有错误被记录,而且是python脚本新手,我不确定问题出在哪里。如有任何建议或帮助,将不胜感激 我知道数字界面和raspberry pi交互并没有什么问题,因为我可以使用下面的命令手动运行python,并且一切正常。把锁打开,然后我就可以把它关了。虽然当我运行脚本时,什么都没有发生 pytho

前几天我写的python脚本有点麻烦。这个脚本是为我的rasbperry pi编写的,它有一个连接到GPIO引脚的数字接口。此脚本的目的是测试并查看它是否将解锁机电锁5秒。虽然当我运行脚本时什么都没发生。没有错误被记录,而且是python脚本新手,我不确定问题出在哪里。如有任何建议或帮助,将不胜感激

我知道数字界面和raspberry pi交互并没有什么问题,因为我可以使用下面的命令手动运行python,并且一切正常。把锁打开,然后我就可以把它关了。虽然当我运行脚本时,什么都没有发生

python
import piface.pfio
piface.pfio.init()
piface.pfio.digital_write(0, 1)
led0 = piface.pfio.LED(0)
led0.turn_off()
我的python脚本

#!/usr/bin/env python3
"""Door Lock: System to control an electric lock"""

import piface.pfio as piface
from time import sleep

class AuthToken:
    def _init_(self, id, secret):
        self.id=id
        self.secret.secret

class TestDoorController:
    def send_open_pulse(self):
        print "unlock the door"

class BasicAuthenticator:
    id = "Andrew"
    secretPassword = "1234"
    def check(self,token):
        print "checking input of '" + token.id + "', + password + : " + token.secret + ", against secret password'" + self.secretPassword +"'"
        result = (token.secret == self.secretPassword) & (token.id == self.id)
        print "authentication is: " + str(result)
        return result

class TestInput:
    def getInput(self):
        print "checking for input"
        authToken + AuthToken("Andrew","1234")
        return authInput

class DoorControllerPiFace:
    def send_open_pulse(self):
        piface.digital_write(0,1)
        sleep(5)
        piface.digital_write(0,0)

def main():
    authInput = TestInput()
    authenticator = BasicAuthenticator()
    doorController = DoorControllerPiFace()

    if(authenticator.check(authInput.getInput())):
        doorController.send_open_pulse()
    if _name_ == '_main_':

        main()
现在我知道构造函数不带参数了

文件“door_controllerTEST.py”,第47行,在 main()

文件“door_controllerTEST.py”,第43行,主菜单 if(authenticator.check(authInput.getInput()):

文件“door_controllerTEST.py”,第30行,在getInput中 返回AuthToken(“Andrew”,“1234”)

TypeError:此构造函数不接受任何参数

在我的AuthToken类中添加了额外的u,它给了我一个错误,我的pfio尚未初始化。所以我加了进去

import piface.pfio as pfio
pfio.init()

从那以后一切都正常了。

课堂测试输入

函数
getInput(self):
没有返回任何内容(即变量
authInput
为空)

您可能想要返回创建的令牌<代码>返回AuthToken(“Andrew”,“1234”)即

类基本验证程序

此类检查
self.id
self.secretPassword
但未设置它们。您正在设置
id
secretPassword

Main

您的主函数也不会被调用,如果_uname _u=='__main _u':带有双下划线,则应该是

class AuthToken:
    def __init__(self, id, secret):
        self.id=id
        self.secret=secret

class TestDoorController:
    def send_open_pulse(self):
        print "unlock the door"

class BasicAuthenticator:
    def __init__(self):
        self.id = "Andrew"
        self.secretPassword = "1234"

    def check(self,token):
        print "checking input of '" + token.id + "', + password + : " + token.secret + ", against secret password'" + self.secretPassword +"'"
        result = (token.secret == self.secretPassword) & (token.id == self.id)
        print "authentication is: " + str(result)
        return result

class TestInput:
    def getInput(self):
        print "checking for input"
        return AuthToken("Andrew","1234")

class DoorControllerPiFace:
    def send_open_pulse(self):
        piface.digital_write(0,1)
        sleep(5)
        piface.digital_write(0,0)

def main():
    authInput = TestInput()
    authenticator = BasicAuthenticator()
    doorController = DoorControllerPiFace()

    if(authenticator.check(authInput.getInput())):
        doorController.send_open_pulse()

if __name__ == '__main__':
    main()

你的权利我不小心把它放在那里,但即使在添加了新行之后,也没有发生任何事情。它仍在运行,没有给我任何输出。如果_name_==\u main:
,请尝试在
中更改为双下划线,您将得到一些输出:)添加到双注释中,现在我至少收到一些消息。我把它们放在上面的描述中。我是否将self.id定义为id,或者我是否错过了阅读您在AuthToken类的init中也缺少双下划线,请检查我答案中的代码,应该可以。我添加了上面的描述,现在一切正常。因为是python新手,所以添加了这些额外的行,这是一件好事吗?我只是好奇