Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2020 18:33:09

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

__rtruediv__ или __truediv__

Доброго времени суток, господа!

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

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

Как такое, через слеш в своем классе забабахать? Курение исходников ничего не дало. Спасибо, за ответы.

Офлайн

#2 Дек. 1, 2020 20:02:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

__rtruediv__ или __truediv__

Разбирался я с библиотекой pathlib
Дайте ссылку что-ли. У них же есть гитхаб наверняка



Отредактировано FishHook (Дек. 1, 2020 20:02:48)

Офлайн

#3 Дек. 1, 2020 23:00:56

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

__rtruediv__ или __truediv__

Ну как-то так…

 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')



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Дек. 1, 2020 23:06:08)

Офлайн

#4 Дек. 1, 2020 23:53:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

__rtruediv__ или __truediv__

  
>>> 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'>
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version