diff --git a/mwclient/errors.py b/mwclient/errors.py
index bf5d2cb00127a56e89eda08bb6a6a75f733031ec..3dcc83a6044934789b96691da4f8006dd071e891 100644
--- a/mwclient/errors.py
+++ b/mwclient/errors.py
@@ -19,7 +19,7 @@ class APIError(MwClientError):
     def __init__(self, code, info, kwargs):
         self.code = code
         self.info = info
-        MwClientError.__init__(self, code, info, kwargs)
+        super(APIError, self).__init__(code, info, kwargs)
 
 
 class InsufficientPermission(MwClientError):
@@ -75,7 +75,7 @@ class InvalidResponse(MwClientError):
                        'you used the correct hostname. If you did, the server might ' + \
                        'be wrongly configured or experiencing temporary problems.'
         self.response_text = response_text
-        MwClientError.__init__(self, self.message, response_text)
+        super(InvalidResponse, self).__init__(self.message, response_text)
 
     def __str__(self):
         return self.message
diff --git a/mwclient/ex.py b/mwclient/ex.py
index c0b1eaebcef32f453f06732a584ac08e4805660f..959599c30ffc91a4ff80c206a482cf65362e5a64 100644
--- a/mwclient/ex.py
+++ b/mwclient/ex.py
@@ -47,11 +47,14 @@ class ConfiguredSite(client.Site):
 
         do_login = 'username' in self.config and 'password' in self.config
 
-        client.Site.__init__(self, host=self.config['host'],
-                             path=self.config['path'], ext=self.config.get('ext', '.php'),
-                             do_init=not do_login,
-                             retry_timeout=self.config.get('retry_timeout', 30),
-                             max_retries=self.config.get('max_retries', -1))
+        super(ConfiguredSite, self).__init__(
+            host=self.config['host'],
+            path=self.config['path'],
+            ext=self.config.get('ext', '.php'),
+            do_init=not do_login,
+            retry_timeout=self.config.get('retry_timeout', 30),
+            max_retries=self.config.get('max_retries', -1),
+        )
 
         if do_login:
             self.login(self.config['username'],
diff --git a/mwclient/listing.py b/mwclient/listing.py
index 6608788e4762debc7e755f6322d848e888b18448..46bc3b8d3a9a1b7b3ddc3c10cc162a1c8e600d45 100644
--- a/mwclient/listing.py
+++ b/mwclient/listing.py
@@ -143,7 +143,7 @@ class List(object):
 
 class NestedList(List):
     def __init__(self, nested_param, *args, **kwargs):
-        List.__init__(self, *args, **kwargs)
+        super(NestedList, self).__init__(*args, **kwargs)
         self.nested_param = nested_param
 
     def set_iter(self, data):
@@ -153,7 +153,8 @@ class NestedList(List):
 class GeneratorList(List):
 
     def __init__(self, site, list_name, prefix, *args, **kwargs):
-        List.__init__(self, site, list_name, prefix, *args, **kwargs)
+        super(GeneratorList, self).__init__(site, list_name, prefix,
+                                            *args, **kwargs)
 
         self.args['g' + self.prefix + 'limit'] = self.args[self.prefix + 'limit']
         del self.args[self.prefix + 'limit']
@@ -167,7 +168,7 @@ class GeneratorList(List):
         self.page_class = mwclient.page.Page
 
     def __next__(self):
-        info = List.__next__(self, full=True)
+        info = super(GeneratorList, self).__next__(full=True)
         if info['ns'] == 14:
             return Category(self.site, u'', info)
         if info['ns'] == 6:
@@ -182,7 +183,7 @@ class GeneratorList(List):
         # Put this here so that the constructor does not fail
         # on uninitialized sites
         self.args['iiprop'] = 'timestamp|user|comment|url|size|sha1|metadata|archivename'
-        return List.load_chunk(self)
+        return super(GeneratorList, self).load_chunk()
 
 
 class Category(mwclient.page.Page, GeneratorList):
@@ -219,8 +220,10 @@ class PageList(GeneratorList):
         if end:
             kwargs['gapto'] = end
 
-        GeneratorList.__init__(self, site, 'allpages', 'ap',
-                               gapnamespace=text_type(namespace), gapfilterredir=redirects, **kwargs)
+        super(PageList, self).__init__(site, 'allpages', 'ap',
+                                       gapnamespace=text_type(namespace),
+                                       gapfilterredir=redirects,
+                                       **kwargs)
 
     def __getitem__(self, name):
         return self.get(name, None)
@@ -257,7 +260,9 @@ class PageList(GeneratorList):
 class PageProperty(List):
 
     def __init__(self, page, prop, prefix, *args, **kwargs):
-        List.__init__(self, page.site, prop, prefix, titles=page.name, *args, **kwargs)
+        super(PageProperty, self).__init__(page.site, prop, prefix,
+                                           titles=page.name,
+                                           *args, **kwargs)
         self.page = page
         self.generator = 'prop'
 
@@ -272,7 +277,9 @@ class PageProperty(List):
 class PagePropertyGenerator(GeneratorList):
 
     def __init__(self, page, prop, prefix, *args, **kwargs):
-        GeneratorList.__init__(self, page.site, prop, prefix, titles=page.name, *args, **kwargs)
+        super(PagePropertyGenerator, self).__init__(page.site, prop, prefix,
+                                                    titles=page.name,
+                                                    *args, **kwargs)
         self.page = page
 
 
@@ -281,4 +288,4 @@ class RevisionsIterator(PageProperty):
     def load_chunk(self):
         if 'rvstartid' in self.args and 'rvstart' in self.args:
             del self.args['rvstart']
-        return PageProperty.load_chunk(self)
+        return super(RevisionsIterator, self).load_chunk()