Python subclassing ConfigParser
One problem I see is that returning None from your modified get() method conflicts with the normal case of a valueless option (from the bottom of the module docs for ConfigParser):

&gt;&gt;&gt; import ConfigParser
&gt;&gt;&gt; import io

&gt;&gt;&gt; sample_config = """
... [mysqld]
... user = mysql
... pid-file = /var/run/mysqld/mysqld.pid
... skip-external-locking
... old_passwords = 1
... skip-bdb
... skip-innodb
... """
&gt;&gt;&gt; config = ConfigParser.RawConfigParser(allow_no_value=True)
&gt;&gt;&gt; config.readfp(io.BytesIO(sample_config))

&gt;&gt;&gt; # Settings with values are treated as before:
&gt;&gt;&gt; config.get("mysqld", "user")
'mysql'

&gt;&gt;&gt; # Settings without values provide None:
&gt;&gt;&gt; config.get("mysqld", "skip-bdb")

&gt;&gt;&gt; # Settings which aren't specified still raise an error:
&gt;&gt;&gt; config.get("mysqld", "does-not-exist")
Traceback (most recent call last):
  ...
ConfigParser.NoOptionError: No option 'does-not-exist' in section: 'mysqld'


Note the second-to-last example commented as "Settings without values provide None:"  Of course this isn't an issue if you intend to exclude this sort of option.  Other than that, I like the auto-section feature.

Though, I'd lean towards adding to the interface rather than masking and changing the behavior, so instead of replacing get/set, add safe_ versions:

def safe_set(self, section, option, value):
    if self.has_section(section):
        self.set(section, option, str(value))
    else:
        self.add_section(section)
        self.set(section, option, str(value))

def safe_get(self, section, option):
    if self.has_option(section, option):
        return self.get(section, option)
    else:
        return None


This would make it more flexible as code would still have access to ConfigParser's normal interface and the option of using the "safe" calls which don't throw exceptions.