Найти - Пользователи
Полная версия: Как инкапсулировать метод объекта типа str?
Начало » Python для новичков » Как инкапсулировать метод объекта типа str?
1
peltat
Добрый вечер!
Есть класс str, у него есть метод upper()
Нужно переопределить этот метод, чтобы он каждый нечетный символ делал в верхнем регистре, а каждую четную в нижнем.

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

class str:
def upper(self):
{тут цикл по обходу всех букв и приведение их к нужным регистрам}
py.user.next
Можешь так сделать
  
>>> 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'
>>>
Rodegast
> Можешь так сделать

А если выучить методы строк, то можно и так
 class Str(str):
     upper = str.capitalize
 
a = Str("aaaa")
print(a.upper())
'Aaaa'
py.user.next
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'
>>>

Подучи алгоритмы по школьному учебнику по информатике. У тебя где-то там пробелы.
ZerG
 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'"
Rodegast
> Да нет, это не одно и то же.

Какая разница? Чуваку всё равно нужно совсем другое
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