Handling Endless Recursion in saveEntry?
I'm not sure if it's any less dirty, but another way you could do it would be:

public function init()
{
    craft()-&gt;on('entries.saveEntry', function(Event $event)
    {
        $entry = $event-&gt;params['entry'];

        if ($entry-&gt;section-&gt;name == "Classes")
        {
            craft()-&gt;db-&gt;createCommand()-&gt;update(
                'entries',
                array('expiryDate' =&gt; DateTimeHelper::formatTimeForDb($entry-&gt;classDate)),
                array('id' =&gt; $entry-&gt;id)
            );
        }
    });
}