How to override default python functions like round ()?

I want to override the default round () function for python because I need to convert the result of the round () function to integer. By default, round () returns a value in float. The code below returns an error message.

RuntimeError: maximum recursion depth exceeded when calling a Python object.

def round(number):
     if type(number) is float: return int(round(number))
     return None
+4
source share
2 answers

, round(), round() round(), , round.

Python 3.x builtins round() -

import builtins
def round(number):
    if type(number) is float: return int(builtins.round(number))
    return None

Python 2.x __builtin__ -

import __builtin__
def round(number):
    if type(number) is float: return int(__builtin__.round(number))
    return None

, , , - round_int .

, , float, None, , , , number (atleast int?).

+14

, round , , python , , , , round, , , .

, try/except .5 , TypeError:

def round(number):
    try:
        return int(number + .5)
    except TypeError:
        return None

, issinstance, numbers.Number :

from numbers import Number
def round(number):
    if isinstance(number, Number):
        return int(number+.5)
    return None

:

def round(number):
    if isinstance(number, float):
        return int(number+.5)
    return None
+4

Source: https://habr.com/ru/post/1609294/


All Articles