【问题标题】:Create functions within classes in google app engine?在谷歌应用引擎的类中创建函数?
【发布时间】:2011-07-13 08:42:29
【问题描述】:

我试图在主页类中包含我自己的函数,但是当调用它们时它根本不起作用,所以我所做的是为它创建一个类并将该函数包含在其中。在 mainpage 类的 get () 中,我为该类创建了一个实例并调用了 object_name.function name() 之类的函数,但它不起作用


class encipher:
    def time_stomp():
        t1=time.time()
        dt = datetime.now()
        dt.now()

        stri=""
        stri+=(str(dt.minute*dt.microsecond)[0:4])
        stri+=(str(dt.second*dt.microsecond)[0:2])
        stri+=(str(dt.microsecond)[0:3])
        stri+=(str(dt.microsecond)[2:3])
        stri+=(str(dt.microsecond)[1:2])
        stri+=(str(dt.microsecond)[0:1])
        return stri

#-------------------------------------------------------------
    def keygen():


        key_stri=""

        ko=0
        datalist_str1=self.time_stomp()
        for i in range(6):

                key_stri+=((hex(operator.xor(int(datalist_str1[ko:ko+2]),128)).replace("0x","")).zfill(2))
                ko+=2
                #print "Key:",key_stri

                #print "Key:",key_stri
        #print "Key:",key_stri
        return key_stri

class MainPage(webapp.RequestHandler):

def get(self): ddes=encipher() global final_data_hex global username global filename username = self.request.get("name") filename=self.request.get("filename") addr=self.request.get("mac") path="d:/xampp/htdocs/encrypt/"+username+'/'+filename f1 = open(path, 'r') #f1=open(path,"r") string=f1.read() i=0 addr=addr.replace(":",'') #self.response.out.write(ddes.keygen())

【问题讨论】:

  • 您的缩进错误,至少在代码 sn-p 中是这样,而且肯定没有任何效果。例如,keygen() 没有被定义为 encipher 类的成员函数。就这不仅仅是代码 sn-p 中的错字而言,您的问题不是 google-app-engine 特定的。
  • 应用引擎的意图是完美的.....有没有一种方法可以将我们的函数包含在主页类中
  • 我们真的需要比“不工作”更多的细节。发生什么了?将它们设为独立函数或处理程序类上的方法有什么问题?
  • @Nick:当我为它们创建课程时,这些功能不起作用。但是现在让它们独立工作!!!!
  • 一般来说你也应该使用 new style classes class encipher(object): 并避免 old style classes class encipher:

标签: python google-app-engine class


【解决方案1】:

python 实例方法需要至少接受一个参数,self。 “它不起作用”是对问题的可怕解释;如果你阅读了你的回溯,你会看到一个关于 .keygen() 接受 0 个参数并提供 1 个参数的错误。

但是,如果您真正想要的是一个函数,那么没有理由将方法封装在一个类中。

【讨论】:

  • 它可以在没有 (self) 参数的情况下工作,但是在你回答之后我给出了 self 参数。谢谢你:)
  • @HariHaraSudhan:只有实例方法需要该参数;也就是说,在class 定义中定义的函数。对于普通函数,如果需要,可以有一个空白参数列表。
【解决方案2】:

我想通了。我们可以简单地在类中包含函数,它会完美地工作。

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2016-05-18
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多