Как обернуть экземпляры классов, но сохранить доступ к атрибутам, как если бы они были развернуты, например pathlib.PathPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как обернуть экземпляры классов, но сохранить доступ к атрибутам, как если бы они были развернуты, например pathlib.Path

Сообщение Anonymous »

Есть ли способ обернуть экземпляры классов друг вокруг друга, как показано ниже, столько раз, сколько необходимо, сохраняя при этом доступ к атрибутам, как если бы они были развернуты?

Код: Выделить всё

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)
# 
pathlib.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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сделать так, чтобы метод подкласса, унаследованный от pathlib.Path, возвращал Path вместо подкласса
    Гость » » в форуме Python
    0 Ответы
    119 Просмотры
    Последнее сообщение Гость
  • Почему невозможно определить полный путь с именем диска с помощью pathlib.Path или os.path.join?
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Pathlib.path против Os.path.join in python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Pathlib.path против Os.path.join in python
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • «Нет модуля с именем" pathlib._local ';' pathlib 'не является ошибкой пакета »при загрузке модели
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»