Iterar sobre atributos de objeto em python

Eu tenho um objeto python com vários atributos e métodos. Eu quero iterar sobre atributos de objeto.

class my_python_obj(object):
    attr1='a'
    attr2='b'
    attr3='c'

    def method1(self, etc, etc):
        #Statements

Eu quero gerar um dicionário contendo todos os atributos de objetos e seus valores atuais, mas eu quero fazê-lo de uma forma dinâmica (por isso, se mais tarde eu adicionar outro atributo não preciso lembrar de atualizar minha função também).

Em php variáveis ​​podem ser usadas como chaves, mas objetos em python são unsuscriptable e se eu usar a notação de ponto para isso, cria um novo atributo com o nome do meu var, que não é minha intenção.

Apenas para tornar as coisas mais claras:

def to_dict(self):
    '''this is what I already have'''
    d={}
    d["attr1"]= self.attr1
    d["attr2"]= self.attr2
    d["attr3"]= self.attr3
    return d

·

def to_dict(self):
    '''this is what I want to do'''
    d={}
    for v in my_python_obj.attributes:
        d[v] = self.v
    return d

Atualização: Com atributos quero dizer apenas as variáveis ​​deste objeto, não os métodos.