Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 What is the correct type hint when you want to accept Iterable but not Dictionary
#1
How would I indicate, using a type hint, that the function only works with a List type data structure containing only int?

I researched a little deeper and from the documentation, I found:

Quote:An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as list, str, and tuple) and some non-sequence types like dict, file objects...

So a dictionary is not a sequence type, but List is, so is Sequence the appropriate type hint?

Obviously, I would filter out str, and dict, but I would like a type hint as well.

def unpack(sequence_to_unpack : Sequence[int]):
    pass
Is the above correct?
Quote
#2
(Mar-05-2019, 03:39 AM)LadySvetlana Wrote: How would I indicate, using a type hint, that the function only works with a List type data structure containing only int?

What's wrong with List[int]?

From casual reading of typing - Support for type hints I have impression that this will deliver desired result (hints that function only works with List type containing only int).
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Quote
#3
(Mar-05-2019, 11:01 AM)perfringo Wrote: What's wrong with List[int]?

From casual reading of typing - Support for type hints I have impression that this will deliver desired result (hints that function only works with List type containing only int).

I had List[int] at first, but I was given the advice that I should use the abstract version in this case Sequence, but Sequence means alot of things, List, tuple, and str, my method is not meant to work with str.

List[int] solves my problem, but is it code smell?

What I don't understand is, in this case, type hints don't enforce or prevent someone from passing another collection or type. I'm still responsible for checking the types and rejecting what I don't want. I don't see a problem with List[int].
Quote
#4
Quote:but I was given the advice that I should use the abstract version in this case Sequence

Sounds like bad advice. Why did you take it.
Quote
#5
(Mar-05-2019, 05:42 PM)woooee Wrote:
Quote:but I was given the advice that I should use the abstract version in this case Sequence

Sounds like bad advice. Why did you take it.

See the whole conversation on Reddit.
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  TypeError: 're.Match' object is not iterable charlesauspicks 1 391 May-25-2020, 06:14 AM
Last Post: bowlofred
  I need my compiled Python Mac app to accept a file as a parameter Oethen 2 235 May-10-2020, 05:57 PM
Last Post: Oethen
  function/nonetype object is not iterable nanok66 5 231 May-08-2020, 07:39 PM
Last Post: nanok66
  min() function in iterable index OokaydO 5 253 Apr-23-2020, 09:21 AM
Last Post: OokaydO
  'int' object is not iterable el_bueno 2 369 Feb-18-2020, 06:25 PM
Last Post: Larz60+
  Type hinting - return type based on parameter micseydel 2 233 Jan-14-2020, 01:20 AM
Last Post: micseydel
  int is not iterable qerrrr 1 417 Sep-22-2019, 08:37 PM
Last Post: metulburr
  __getattr__ and type hint itaybardugo 0 426 Jul-04-2019, 09:50 PM
Last Post: itaybardugo
  Pyodbc does not accept variable from tkinter diegoctn 9 921 Feb-12-2019, 05:12 PM
Last Post: Larz60+
  TypeError: 'int' object is not iterable shan1403 7 6,718 Dec-25-2018, 08:36 PM
Last Post: ichabod801

Forum Jump:


Users browsing this thread: 1 Guest(s)