diff --git a/Lib/bdb.py b/Lib/bdb.py
index 66d3457..bc0b282 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -13,8 +13,10 @@
 
 class Bdb: # Basic Debugger
 	
-	def init(self):
+	def __init__(self):
 		self.breaks = {}
+
+	def init(self):			# BW compat only
 		return self
 	
 	def reset(self):
@@ -303,5 +305,5 @@
 def test():
 	import linecache
 	linecache.checkcache()
-	t = Tdb().init()
+	t = Tdb()
 	t.run('import bdb; bdb.foo(10)')
diff --git a/Lib/cmd.py b/Lib/cmd.py
index 7c512de..c4a347d 100644
--- a/Lib/cmd.py
+++ b/Lib/cmd.py
@@ -14,7 +14,7 @@
 		self.identchars = IDENTCHARS
 		self.lastcmd = ''
 	
-	def init(self):
+	def init(self):			# BW compat only
 		return self
 
 	def cmdloop(self):
diff --git a/Lib/pdb.py b/Lib/pdb.py
index b8446aa..c5d3e1c 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -12,10 +12,12 @@
 
 class Pdb(bdb.Bdb, cmd.Cmd):
 	
-	def init(self):
-		self = bdb.Bdb.init(self)
-		self = cmd.Cmd.init(self)
+	def __init__(self):
+		bdb.Bdb.__init__(self)
+		cmd.Cmd.__init__(self)
 		self.prompt = '(Pdb) '
+
+	def init(self):			# BW compat only
 		return self
 	
 	def reset(self):
@@ -277,19 +279,19 @@
 # Simplified interface
 
 def run(statement):
-	Pdb().init().run(statement)
+	Pdb().run(statement)
 
 def runctx(statement, globals, locals):
-	Pdb().init().runctx(statement, globals, locals)
+	Pdb().runctx(statement, globals, locals)
 
 def runcall(*args):
-	apply(Pdb().init().runcall, args)
+	apply(Pdb().runcall, args)
 
 
 # Post-Mortem interface
 
 def post_mortem(t):
-	p = Pdb().init()
+	p = Pdb()
 	p.reset()
 	while t.tb_next <> None: t = t.tb_next
 	p.interaction(t.tb_frame, t)
