这个对象是什么?

时间:2014-10-20 22:18:04

标签: python python-2.7

我知道这是一个数据对象,但我是python的新手,我不明白user_output在做什么。试图理解这一切。

def user_output(self,check): #data object 
    output = ""
    #loop of all the info for __user_arr
    for user in self.__user_arr:
        if user.user_bot == str(check):
            output += '''
    <div class='about'>
        <h1>{user.user_name}</h1>
        <h2>My favorite band is: {user.user_band} </h2>
        <div class='business'>
            <p>Why I want the tickets:<br /> {user.user_business}</p>
        </div>
    </div>
            '''
            return output.format(**locals())
        else: #this will spit an error if the user do not answer the last question correctly.
            output = '''<div class='error'><h2>Turns out you are a robot. No tickets for you </h2></div>'''
            return output

3 个答案:

答案 0 :(得分:0)

它将为每个用户生成一个带有一些喜欢的乐队等的div块,前提是用户标志user_bot等于check(据我所知,一种机器人检查)。如果用户是机器人(未通过检查),程序将生成Turns out you are a robot..块。

答案 1 :(得分:0)

这看起来像一个函数,而不是一个对象。它会检查您的用户是否是机器人。它通过检查您的用户(对于每个用户)是否将user_bot作为输入的字符串来执行此操作,可能是识别机器人的字符串。然后你写了一些我对输出字符串一无所知的东西,可能卖掉了票。 这个函数似乎只对第一个用户执行此操作,但因为它在第一个if else子句中返回。

答案 2 :(得分:0)

user_output()似乎是某个类中的一种方法。它正在使用“穷人”的诱惑工具来输出HTML片段。

似乎使用了一个循环for user in self.__user_arr:,但这有点像假。它使用此构造从self.__user_arr中选择第一个项目。因为它很快就会在所有条件下从函数返回,所以它永远不会返回到循环的头部来检查后续用户(如果有的话)。

另请注意,self.__user_arr的双引号前缀将其标记为对象实现的私有部分。一个非常私密的部分。单个下划线通常表示“私有”。双下划线没有超精确的定义,但“非常私密”或“非常依赖于实现”将是我的猜测。

如果第一个用户的user_bot属性是一个等于check值的字符串(如字符串化),则实例化模板。它首先设置一个字符串变量(output),该变量嵌入了与{a_variable}的{​​{1}}方法兼容的变量标记(str)。调用format使用output.format(**locals())(它是所有当前变量赋值的查找字典,即符号表)进行字符串格式化操作。 locals()构造意味着“使用这个dict(或类似dict)对象,好像它是一组关键字参数。”结果是,**locals()中的子字符串output直接插入到{user.user_band}字符串中。然后返回填充的字符串。

如果output测试失败,则返回一个简单的错误字符串。

在任何一种情况下,都会返回一个字符串,并退出该方法。

唯一值得考虑的另一个案例是user.user_bot == str(check)集合中没有用户会怎样?然后循环将永远不会运行,并且该方法将隐式返回self.__user_arr

相关问题