In python class, how to pass returned value of a method of a class as input to another method of the same class

26 views Asked by At

I am using boto3 library to establish connection to an s3 compatible storage. I had created a class with constructor that take cluster details, access key & IDs as inputs, having these initiated. now created a method that opens s3 clients to the clusters and returned the s3 client object. want to use this in a diff method of the same class to list buckets:

class s3_boto3_methods():

    def __init__(self,host,port,user,accesskey,session_token = None):
        #self.host = host
        self.port = port
        self.host = host + ":" + str(self.port)
        self.user_key = user
        self.access_key = accesskey
        session_token = None

   def s3_Client_Connection(self):
        s3_client = boto3.client('s3',use_ssl=False,verify=False, aws_access_key_id=self.user_key,aws_secret_access_key=self.access_key,endpoint_url=self.host)
         return (s3_client)
   
   def listBuckets(self,client):
         response = client.list_buckets()['Buckets'] 
         print ("Buckets for user:",self.user_key)
         for item in response:
             print (item["Name"])

if __name__ == "__main__":
    instance=s3_boto3_methods("host","port","access_id","access_key")
    s3_client=instance.s3_Client_Connection()
    instance.listBuckets(s3_client)

In the above, the method s3_Connect_Connection returns s3_client object, i need to use this inside listBuckets method. Currently, i am handling this by calling instance.s3_Client_Connection and passing this returned connection as parameter in next line.

Open to suggestions, that can improve this code snippet.

Other Option is to call s3_client_connection inside the listBuckets, so whenever list buckets is called, it sets up client connection first:

    def listBuckets(self):
    s3_client=self.s3_Client_Connection()
    response = s3_client.list_buckets()['Buckets'] #here response is a list with dictionaries as list items in it.
    print ("Buckets for user:",self.user_key)
    for item in response:
        print (item["Name"])
0

There are 0 answers