Код: Выделить всё
class MyPath:
def __init__(self, path=None):
self.path = path
print(MyPath('my/file/path.txt').path)
# my/file/path.txt
print(MyPath(MyPath('my/file/path.txt')).path)
#
Одна из упрощенных возможностей:
Код: Выделить всё
class MyPath:
def __init__(self, instance_or_path=None):
self._instance_or_path = instance_or_path
@property
def path(self):
if isinstance(self._instance_or_path, MyPath):
return self._instance_or_path.path
return self._instance_or_path
Изменить: приведенное выше решение или утиный набор текста. Вариант, опубликованный @Andr0id16, подходит, если класс содержит только очень ограниченное количество атрибутов, но в противном случае он кажется мне неуклюжим, поскольку проверку типа или попытку/исключение придется включать для каждого из них.
Подробнее здесь: https://stackoverflow.com/questions/786 ... rapped-lik