Найти - Пользователи
Полная версия: __rtruediv__ или __truediv__
Начало » Python для экспертов » __rtruediv__ или __truediv__
1
helm2004
Доброго времени суток, господа!

Разбирался я с библиотекой pathlib, и там увидел очень интересный кусок кода:

 from pathlib import Path
outpath = Path.cwd() / 'assets' / 'fonts' / 'arrial' / 'ArialMT.ttf'
current_dir = Path.cwd()

Как такое, через слеш в своем классе забабахать? Курение исходников ничего не дало. Спасибо, за ответы.
FishHook
Разбирался я с библиотекой pathlib
Дайте ссылку что-ли. У них же есть гитхаб наверняка
Rodegast
Ну как-то так…
 class A:
	def __init__(self, txt):
		self.txt = txt
	def __repr__(self):
		return self.txt
	def __truediv__(self, other):
		if isinstance(other, str):
			return A(self.txt+"\\"+other)
		raise ValueError(other)
	__div__ = __truediv__       # Нужно для совместимости с python2
 
a = A("C:\\")
print(a / 'assets' / 'fonts' / 'arrial' / 'ArialMT.ttf')
py.user.next
  
>>> class T:
...     def __init__(self, value):
...         self.value = value
...     def __str__(self):
...         return self.value
...     def __repr__(self):
...         return self.value
...     def __truediv__(self, value):
...         return T('|'.join((self.value, value)))
... 
>>> t = T('abc')
>>> t
abc
>>> out = t / 'def' / 'ghi'
>>> out
abc|def|ghi
>>> 
>>> type(out)
<class '__main__.T'>
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB