Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2023 06:25:12

peltat
Зарегистрирован: 2023-11-09
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Как инкапсулировать метод объекта типа str?

Добрый вечер!
Есть класс str, у него есть метод upper()
Нужно переопределить этот метод, чтобы он каждый нечетный символ делал в верхнем регистре, а каждую четную в нижнем.

Правильный ли ход моих мыслей?:

class str:
def upper(self):
{тут цикл по обходу всех букв и приведение их к нужным регистрам}

Офлайн

#2 Ноя. 9, 2023 07:31:26

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

Как инкапсулировать метод объекта типа str?

Можешь так сделать

  
>>> class Str(str):
...     def upper(self):
...         return self[0].upper() + self[1:]
... 
>>> str = Str
>>> 
>>> s = str('abc')
>>> s.upper()
'Abc'
>>>
Но это не совсем замена str.

  
>>> str
<class '__main__.Str'>
>>> type('')
<class 'str'>
>>>
>>> 'abc'.upper()
'ABC'
>>> 
>>> str('abc').upper()
'Abc'
>>>



Офлайн

#3 Ноя. 9, 2023 17:38:59

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

Как инкапсулировать метод объекта типа str?

> Можешь так сделать

А если выучить методы строк, то можно и так

 class Str(str):
     upper = str.capitalize
 
a = Str("aaaa")
print(a.upper())
'Aaaa'



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

Офлайн

#4 Ноя. 10, 2023 05:53:08

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

Как инкапсулировать метод объекта типа str?

Rodegast
А если выучить методы строк, то можно и так
  
class Str(str):
     upper = str.capitalize
 
a = Str("aaaa")
print(a.upper())
'Aaaa'
Да нет, это не одно и то же.
  
>>> class Str(str):
...     def upper(self):
...         return self[0].upper() + self[1:]
... 
>>> s = 'сегодня в нашем ООО "Сириус" мы изучаем Python'
>>> 
>>> Str(s).upper()
'Сегодня в нашем ООО "Сириус" мы изучаем Python'
>>> 
>>> s.capitalize()
'Сегодня в нашем ооо "сириус" мы изучаем python'
>>>

Подучи алгоритмы по школьному учебнику по информатике. У тебя где-то там пробелы.



Офлайн

#5 Ноя. 10, 2023 07:57:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Как инкапсулировать метод объекта типа str?

 st = "This is StrIng oOo"
res = "".join([val.upper() if not pos % 2 else val.lower() for pos, val in enumerate(st)])
ic(res)
"ic| res: 'ThIs iS StRiNg oOo'"



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#6 Ноя. 10, 2023 19:21:54

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

Как инкапсулировать метод объекта типа str?

> Да нет, это не одно и то же.

Какая разница? Чуваку всё равно нужно совсем другое



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version