Вы можете выдвинуть его позже:
class class1(object):
def __init__(self, friend=None):
if friend is None:
friend = class2
self.friendInstance = friend()
Редактировать: На самом деле, не делайте этого.Он создаст экземпляр class2, который создаст экземпляр class1, который создаст экземпляр class2 и т. Д. Возможно, вы действительно хотите передать экземпляр вместо экземпляра класса, который будет создан:
class class1(object):
def __init__(self, friend=None):
if friend is None:
self.friendInstance = class2(self)
else:
self.friendInstance = friend
и аналогично для class2.Это не так гибко, но довольно просто.Если вам действительно нужна гибкость, вы можете сделать что-то вроде этого:
class class1(object):
def __init__(self, friend=None, friendClass=None):
if friend is None:
self.friendInstance = (class2 if friendClass is None else friendClass)(self)
else:
self.friendInstance = friend
class class2(object):
def __init__(self, friend=None, friendClass=class1):
if friend is None:
self.friendInstance = friendClass(self)
else:
self.friendInstance = friend
Это можно упростить с помощью наследования или метаклассов, но вы, вероятно, получите идею.