我正在通过udacity.web_development课程自学编码。我的编码很好,但我经常遇到与流程有关的问题,而不是代码。
就像现在一样: 我不知道如何在一个类中测试这个函数(passwort_check)。我不能称之为。 当我把"打印MainHandler.passwort_check((self或MainHandler)," string")"在底部它给我一个类型错误。
我现在知道所有这些webhandlerstuff都没用。但我以后需要它。评论一切,但我需要的一个功能不是正确的解决方案。
这是我的代码:
import webapp2
import re
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write('Hello world!')
def passwort_check(self, passwort_string):
if re.match("^[a-zA-Z0-9_-]{3,20}$", passwort_string):
print passwort_string
else: print "change pw"
print MainHandler.passwort_check(MainHandler,"hallo")
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
这是我的错误:
TypeError:必须使用MainHandler实例作为第一个调用unbound方法passwort_check()>参数(获取类型实例)
但我的问题更为通俗:在这种情况下,你们是如何做专业/经验的编码人员进行代码验证的?
答案 0 :(得分:2)
您需要先创建一个MainHandler类的实例。像:
my_handler = MainHandler()
然后调用其中的函数。像:
my_handler.passwort_check('passwort_string')
如果你需要为此做一些unittest
。检查此link。它会给你一些指示。
希望它有所帮助。:)
答案 1 :(得分:2)
鉴于MainHandler.passwort_check
对self
参数没有任何作用,您可以 - 至少现在 - 将其定义为static method。与在类定义中声明的普通方法不同,静态方法不会隐式接收将它们作为第一个参数调用的实例。实际上,根本不需要在任何实例上调用它们。
@staticmethod # This is called a "decorator"
def passwort_check(passwort_string) # Omit self from the parameters
# The rest of your code remains the same
然后你可以简单地按照你的方式调用它,但是你不需要假设一个实例作为第一个参数传递。
MainHandler.passwort_check('string')
应该可以正常工作。
(当然,如果您只是想测试正则表达式,那么简单地使用像Regex101这样的正则表达式测试站点可能会更容易。)