Foros del Web » Programando para Internet » Python »

Usar el atributo de una clase en un metodo, fuera de la clase

Estas en el tema de Usar el atributo de una clase en un metodo, fuera de la clase en el foro de Python en Foros del Web. Bueno soy nueva por aca, mi duda es como dice el titulo. Como puedo usar una variable de una clase en un método, estoy levantando ...
  #1 (permalink)  
Antiguo 13/09/2013, 12:03
Avatar de Edgdaly  
Fecha de Ingreso: septiembre-2013
Mensajes: 1
Antigüedad: 10 años, 7 meses
Puntos: 0
Usar el atributo de una clase en un metodo, fuera de la clase

Bueno soy nueva por aca, mi duda es como dice el titulo.
Como puedo usar una variable de una clase en un método, estoy levantando un servicio de SMPP

Código:
def Active(idEventSms):
    x=SMPP(idEventSms)
    x.run()
    y=x.message()
    reactor.run()
   
    
    return y

class SMPP(object):
    
    def __init__(self,idEventSms,config=None):

        if config is None:
            logging.basicConfig(level=logging.DEBUG)
            
            self.idEventSms=int(idEventSms)
            self.Event=None     

            host='host'
            port=0000
            username='user'
            password='pass' 

            self.smpp=None
            config = SMPPClientConfig(host=host, port=port, username=username, password=password)

            self.config = config

    @defer.inlineCallbacks
    def run(self):
        try:

            self.smpp = yield SMPPClientTransceiver(self.config,self.handleMsg).connectAndBind() 
        
            yield self.smpp.getDisconnectedDeferred()
            
        except Exception, e:
            print "ERROR: %s" % str(e)
        finally:
            reactor.stop()

        def handleMsg(self, smpp, pdu):
              """
               NOTE: you can return a Deferred here
               """
               print "Received pdu %s" % pdu

    def message(self):
        """
        NOTE: you can return a Deferred here
        """
        
        submit_pdu = SubmitSM(
        #service_type,
        #source_addr_ton=SOURCE_ADDR_TON,
        #source_addr_npi,
        source_addr=ESME_NUM,
        #dest_addr_ton=DEST_ADDR_TON,
        #dest_addr_npi=DEST_ADDR_NPI,
        destination_addr=self.phoneNumber,
        esm_class=EsmClass(EsmClassMode.STORE_AND_FORWARD, EsmClassType.SMSC_DELIVERY_RECEIPT),
        protocol_id=0,
        #priority_flag,
        #schedule_delivery_time,
        #validity_period,  registered_delivery=RegisteredDelivery(RegisteredDeliveryReceipt.SMSC_DELIVERY_RECEIPT_REQUESTED), 
        replace_if_present_flag=ReplaceIfPresentFlag.DO_NOT_REPLACE,
        data_coding=DataCoding(DataCodingScheme.DEFAULT, DataCodingDefault.SMSC_DEFAULT_ALPHABET),
        sm_default_msg_id=self.idEventSms,
        short_message=self.bodySms)
        a,f=self.smpp.sendEvent(str(self.idEventSms),self.idSmsFriend)
        print a,f
        self.smpp.sendDataRequest(submit_pdu)
        self.smpp.getDisconnectedDeferred()
        return self.smpp

Pero necesito que retorne el valor de smpp y retorna otra cosa que no es no quiero que al llamar el self.smpp, funcione desde cualquier parte fuera de la clase.

Gracias de antemano.
  #2 (permalink)  
Antiguo 13/09/2013, 20:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Usar el atributo de una clase en un metodo, fuera de la clase

Creo que estas confundido (o probablemente no sepas) sobre como y cuando usar POO.

¿Que tal si tienes varias instancias de SMPP?
¿Por que elegiste POO para resolver este problema?
¿Consideraste otro tipo de paradigmas?
  #3 (permalink)  
Antiguo 14/09/2013, 09:32
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Usar el atributo de una clase en un metodo, fuera de la clase

Yo no entendí muy bien lo que planteas. Pero aprovecho para decirte que los nombres de las funciones y variables sean en minuscula_con_guiones_bajos y EnMayuscula para las clases. También que coloques espacios entre los operadores lógicos (+, -, *, /) y de asignación (=). Por último no coloques líneas en blanco innecesarias; solo para separar funciones / clases y un grupo de asignaciones o llamadas relacionadas.

Suerte

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:56.