im confused with use of def __init__ in a class definition. im new, so problem is not understanding why the hell i needed it - if i dont have to define variables in the class:
here is a paramiko ssh connection object, in which i have commented out the def__init__(self), and my code seems to work. if i uncomment the line, i get an error about indent because there is no code underneath the def __init__. Im partly concerned because I reference self in the other functions to perform more actions in the instance. it seems to know what self is, even though i haven't init-ed it.
  File "XXXX", line 517
    def sshCLIENT(self):
    ^
IndentationError: expected an indented block after function definition on line 515
class SSHCONN():  #paramiko connection object class for SSH logins
    '''http://http://www.paramiko.org/'''
    
    #def __init__(self):
        
    def sshCLIENT(self):
        try:
            self.sshSESS = paramiko.SSHClient()  #instantiate SSH session object
            self.sshSESS.set_missing_host_key_policy(paramiko.AutoAddPolicy())  #auto add host SSH key - must trust
            return True
        except:
            return False
            
    def CONNECT(self, IP, U, P, validPWD=True, Port=22):
        PwdShow = P if validPWD == False else '<PwdHidden>'
        
        try:
            LogDrop(f'Login Attempt to \'{IP}\' with: \'{U} / {PwdShow}\'')
            ##paramiko needs keyword arguments for logins, cannot use positional
            self.sshSESS.connect(hostname=IP, username=U, password=P, look_for_keys=False, allow_agent=False, timeout=5)
            return True
            
        except paramiko.ssh_exception.AuthenticationException:
            LogDrop(f'Connection to \'{IP}\' failed with: \'{U} / {PwdShow}\', due to bad username or password.')
            LogDrop('...')
            self.sshSESS.close()
            return False
            
        except paramiko.ssh_exception.SSHException:
            LogDrop(f'Connection to \'{IP}\' failed, probably due to SSH2 protocol negotiation errors.')
            LogDrop('...')
            self.sshSESS.close()
            return False
            
        except paramiko.ssh_exception.NoValidConnectionsError:
            LogDrop(f'Connection to \'{IP}\' failed, probably due SSH not listening.')
            LogDrop('...')
            self.sshSESS.close()
            return False
            
        except:
            LogDrop(f'Connection to \'{IP}\' failed, probably due to host not online.')
            LogDrop('...')
            selfsshSESS.close()
            return False
    def CLOSE(self, IP=None):
        if IP == None: IP = 'server'
        else: IP = "\'" + IP + "\'"
        
        self.sshSESS.close()
        LogDrop(f'SSH connection successfully closed to: {IP}')
                
    def SFTPOPEN(self, IP=None):
        if IP == None: IP = 'server'
        else: IP = "\'" + IP + "\'"
        
        try:
            self.sshSESS.open_sftp()
            return True
            
        except:
            LogDrop(f'SFTP session opened failed to {IP}; likely due to SFTP not running or configured.')
            LogDrop('...')
            self.sshSESS.close()
            return False
    def SFTPPUT(self, IP, file, strRmtSubDir): 
        try:
            LogDrop(f'Transferring file {os.path.basename(file)} to server: {IP}')
            LogDrop(f'at remote location: {strRmtSubDir}/{os.path.basename(file)}')
            self.sshSESS.open_sftp().put(file, strRmtSubDir.rstrip("/") + "/" + os.path.basename(file)) #if user has ending "/", rstrip it
        except FileNotFoundError as error:
            LogDrop(f'Unable to move file: {error}')
        except:
            LogDrop('Unexpected error: ', sys.exc_info())
            sys.exit(1)
    def SFTPCLOSE(self, IP=None):
        if IP == None: IP = 'server'
        else: IP = "\'" + IP + "\'"
        
        try:
            self.sshSESS.open_sftp().close()
            LogDrop(f'SFTP Channel successfully closed to: {IP}')
        except:
            LogDrop(f'SFTP Channel failed to close to: {IP}')
 
     
    