Iterar sobre atributos de objeto en Python

Tengo un objeto python con varios atributos y métodos. Quiero iterar sobre los atributos del objeto.

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

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

Quiero generar un diccionario que contenga todos los atributos de los objetos y sus valores actuales, pero quiero hacerlo de forma dinámica (por lo tanto, si luego agrego otro atributo, no tengo que acordarme de actualizar mi función también).

En php, las variables se pueden usar como claves, pero los objetos en python no se pueden escribir y si uso la notación de puntos para esto, crea un nuevo atributo con el nombre de mi var, que no es mi intención.

Solo para aclarar las cosas:

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

Actualización: Con atributos me refiero solo a las variables de este objeto, no a los métodos.