2015-07-30 12 views
1

Возможно ли в Python изменять или, по крайней мере, отказывать в выполнении встроенных функций? Мне нужно, для образовательных цель, чтобы убедиться, что строки разделены недоступно.python изменить встроенные строковые функции

Например, я хочу, если вызов

'a,b,c'.split(',') 

бросить исключение или быть возвращены строки занесены.

Я хочу заставить кого-то написать собственную версию этой функции. Является ли это возможным?
Заранее благодарим!

ответ

3

Встраиваемые типы (str в вашем случае) и методы не могут быть обработаны обезьяной, поскольку они реализованы в C (для реализации cpython).

Однако, вы можете определить подкласс и переопределить метод:

>>> class Mystr(str): 
...  def split(self, *args): 
...    raise Exception("Split is not defined") 
... 
>>> Mystr("test").split(",") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 3, in split 
Exception: Split is not defined 
+0

Может быть, определение функции раскол (сам, * арг): 'так, что он будет принимать значение по умолчанию без аргументов? В противном случае это вызовет исключение из числа аргументов. – SiHa

+0

Да, я немного подумал об этом. Спасибо, например, может быть, мне придется это использовать! –