Python:调用未绑定方法receive()时必须使用MessageNet实例作为第一个参数(改为获取MessageGlobal实例)

2024-07-04 07:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题是我的django观点

 def home(request):
        try:
            from_number  = request.GET['from_number']
            to_number  = request.GET['to_number']
            messagetext  = request.GET['msg_text']
            date_time  = request.GET['date_time']
            date_received  = request.GET['date_received']
            status = 0
        except:
            LOG_ERROR('Invalid Parameter')

            #Return to some product page or 500 error with message
            #pass    #  return some value  after discussing with sir 
     #      #Based on from number identify the Vmn and his class anc class the respective receieve method of that class
        if from_number !=None  and to_number != None:
            try:getvmn = ServiceProvider.objects.get(status = False)
            except:
                LOG_FATAL("VMN doesn't exists ")
                getvmn = False
            if getvmn:
                print "-=-=-=-=-==-=-=-==================="
    #           get_related_class = ServiceProvider.objects.filter(id  = getvmn.merchant,status = False)
                get_related_class = ServiceProvider.objects.get(status = False)
                b = SMSMgr()
                for objec in b._allsp:
                    if objec.class_Name == 'MessageNet':
                       # messageglobalobject  =     
                        MessageNet.receive(MessageGlobal(from_number,to_number,messagetext,date_received,status))

给你短信.py在

^{pr2}$

这是MessageNet类

class MessageNet():
    def __init__(self,username,password,sendingurl,class_Name):
        self.username = username
        self.password = password
        self.messagetext = None
        self.sendingurl = sendingurl
        self.class_Name = class_Name
        self.PhoneNumber = None
       # self.apiurl = apiurl

    def send(self,mg):

        payload = {'username': self.username, 'Pwd': self.password,'PhoneNumber':mg.tonumber,'PhoneMessage':mg.messagetext}
        r = requests.get(self.sendingurl, params=payload)
        LOG_INFO("Message sent to %s  via  %s", self.PhoneNumber,'Messagenet')
        #   Call to ms manager 

    def receive(self,getmessageobject):

        print "receive and notify the user "    

我得到了错误的答案

MessageNet.receive(MessageGlobal(from_number,to_number,messagetext,date_received,status))
of my views .

我试图将MessageGlobal的对象传递给receive方法,以便可以在MessageNet类的receive方法中访问它们。在

请告诉我为什么我会犯这个错误。在


Tags: tofromselfnumbergetdaterequestdef
2条回答

您正在类上调用实例方法,而不是实例。您需要实例化一个MessageNet对象,然后在该实例上调用receive,而不是在类上。在

或者,您可以将其设为一个类方法,但这样您就不能访问任何实例属性(密码等)。在

您得到它是因为您将一个MessageGlobal实例传递给MessageNet上的方法。或者传递一个MessageNet实例,或者将该方法转换为普通函数。在

相关问题 更多 >

    热门问题