Как передать собственный класс на метод в качестве параметра по умолчании?
Можно ли такое осуществлять? Или такое не стоит сделать даже если возможно?
Можно. Не стоит.
Значение аргументов по умолчанию в функции вычисляется в момент объявления функции, а не в момент обращения к ней.
Например, экземпляр класса Test, который Вы пытаетесь использовать в качестве значения по умолчанию, будет создан в момент определения метода test, что может быть не тем, что Вы ожидаете и может привести к сложно отлаживаемым ошибкам из за неочевидного разделения состояния между экземплярами.
Также, Ваш код приведет к ошибке, так как в момент определения метода test класс Test еще не полностью определен, и Вы не можете создать его экземпляр.
Вместо этого, можно использовать None для аргумента по умолчанию, а внутри метода проверять, был ли передан аргумент, и если нет, то создавать новый экземпляр класса:
class Test:
def test(self, x=None):
if x is None:
x = Test()
print(type(x))
x = Test()
x.test()
Поделитесь целью использования такой схемы?