Python Forum
redefinition of unused function
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
redefinition of unused function
#11
what if both are specified?
Reply
#12
You decide what the function will do with the parameters. I am giving you a way to take an action according to the parameter.

def func(something):
    if type(something) == str:
        # action
    elif type(something) == Object:
        # action
Maybe there are other ways but this is just an example. I am tired Dodgy
You want to do something according to the function's parameter type. Check the type.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#13
yeah but this is not a pythonic way, right? as others have mentioned
Reply
#14
Hm! What does pythonic mean, then?

I do not know all built-in functions and modules. Perhaps there is a better way. As R. Hettinger says. I didn't read the previous posts very well. @Gribouillis mentioned it - from the functools module singledispatch.
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#15
my bad, i was in class when reading the comments and wasn't careful. thanks for putting that forward. that's what i needed actually
Reply
#16
(Feb-10-2018, 06:00 PM)wavic Wrote: Hm! What does pythonic mean, then?

I do not know all built-in functions and modules. Perhaps there is a better way. As R. Hettinger says. I didn't read the previous posts very well. @Gribouillis mentioned it - from the functools module singledispatch.

def func(something):
    if isinstance(something, (int, float)):
        return something ** 2
    elif isinstance(something, bytes):
        return something.decode(errors='IGNORE')
    elif isinstance(something, (list, tuple, dict)):
        return list(something)
    else:
        raise Exception('Input type not supported')
I like the syntactic sugar of signledispatch.
Now the same function with singledispatch:

@singledispatch
def func(something):
    raise Exception('Input type not supported')

@func.register(float)
@func.register(int)
def _(something):
        return something ** 2

@func.register(bytes)
def _(something):
    return something.decode(errors='IGNORE')

@func.register(list)
@func.register(tuple)
@func.register(dict)
@func.register(set)
def _(something):
    return list(something)
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#17
EDIT: don't read on. i forgot self.

since i needed a member function, i found this on the internet:
def method_dispatch(func):
    dispatcher = singledispatch(func)

    def wrapper(*args, **kwargs):
        return dispatcher.dispatch(args[1].__class__)(*args, **kwargs)

    wrapper.register = dispatcher.register
    update_wrapper(wrapper, func)
    return wrapper
then:
@method_dispatch
    def do_work(self, info):
        pass

    @call.register(type1)
    def _(self, param):
        return do_work(param)

    @call.register(str)
    def _(self, param):
        # do work
as you can see i'm calling an overload from another one, but i get "undefined variable" on that call. how should i call it?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Uninstall unused COM ports windows 10 adbrooker 1 1,981 Sep-22-2021, 03:16 AM
Last Post: Larz60+
  redefinition of a method in a class: pylint warning kboo 1 4,215 Feb-13-2018, 11:21 AM
Last Post: buran

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020