- Notifications
You must be signed in to change notification settings - Fork263
How to type hint a "float-like" object?#2038
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
-
How do I make type hint for a function, which takes any kind for object that behaves like a float? defcubed(x):returnx**3 This function can accept a float ( pandas series: s=pd.Series([1,2,3])cubed(s) xarray dataarray a=xr.DataArray([1,2,3],dims='x')cubed(a) |
BetaWas this translation helpful?Give feedback.
All reactions
You might want to use a protocol with a__pow__
method (since the**
operator calls__pow__
). Search fortyping.Protocol
for more. There are many things "float-like" could mean but a Protocol should generally be able to express them.
Replies: 5 comments
-
Depending on how precise you want to be, something like numpy's In the future, questions like this should generally be asked in thediscussions tab or athttps://discuss.python.org/c/help/7 |
BetaWas this translation helpful?Give feedback.
All reactions
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
-
Hmm, but ArrayLike is kind of opposite, right? This is for objects that have array-like behaviour (which includes a scalar instance of a float). What I am looking at, are objects that have a float-like behaviour (which includes arrays of floats). Does that make sense? I was wondering if the was some kind of FloatLike (or maybe more mathematically correct: a RealNumberLike) protocol in Sorry for asking in the wrong place; I was too hastly there. I can move the discussion to there, if you like :-) |
BetaWas this translation helpful?Give feedback.
All reactions
-
You might want to use a protocol with a |
BetaWas this translation helpful?Give feedback.
All reactions
-
Hmm, I would suggest that "float-like" means it supports all the methods of the builtin float object definedhere. So I guess a Protocol with these method would suffice maybe? Could this be part of |
BetaWas this translation helpful?Give feedback.
All reactions
-
Whether it suffices or not really depends on your code. I would probably find it surprising if the thing you're thinking of as float-like actually returns float for some of those methods. Try it and see, your type checker should tell if you if your Protocol has things your type doesn't satisfy or if you use things not described by your Protocol!
There's a high bar for adding things to the standard library, particularly when they can easily be defined outside the standard library and haven't yet been evidenced to be highly desired. |
BetaWas this translation helpful?Give feedback.
All reactions
This discussion was converted from issue #2037 on July 02, 2025 10:55.