News for hackers. Stuff that matters.
Re:Using Enumerated Types in Python by zo1 on Saturday June 06, 2020 @02:24PM (#23441243)
The article is incredibly misleading. Python Enums are way more powerful than what is showcased there.

First, rudimentary/basic enums are as simple as instance variables on a class and allow super-helpful IDE "auto-completion" that doesn't necessitate the use of magic-strings to at least "set" the enum. I've been using this ridiculously simple trick since 2.5 ten years ago. Magic-strings are bad, and even worse when you have a disparate code-base in a dynamically typed language. Example:

    class MyEnum(object):
        Pass = 1
        Fail = 2

    my_value = MyEnum. <-- at this point, the IDE gives you code-completion.

Second, real Enums added as a language-feature along with type-hinting are almost 100% on-par with statically typed languages. See:

    class MyEnum(Enum):
        Pass = 1
        Fail = 2

    def my_func(did_they_pass: MyEnum):
        if did_they_pass.Something:   # IDE / type-checker will go nuts here.
            print("Something")
Edit: Forgot the main point. Switch/case uses are only a small sub-set of the uses of Enums. So even basic/crappy enums are better than magic strings in a dynamically-typed language. Also, please don't use "list of strings" for enums in Python, there are much better ways to do that sort of thing that preclude unnecessary bugs popping up.
Re:Using Enumerated Types in Python by BiteCode_dev on Saturday June 06, 2020 @03:18PM (#23441577)
So, you don't use open("w"), do you ? You use the non magic open(os.O_WRONLY) of course.

Because magic strings are bad.

Re:Using Enumerated Types in Python by MikeTheGreat on Saturday June 06, 2020 @03:42PM (#23441718)
I will now - thanks for the tip! :)

And, moreover, this will inspire me to ask "How many other traditional magic numbers/strings/etc have I gotten used to that might be defined more readably?" strcmp, I'm looking at you!

I know your post was sarcastic/snarky but it was genuinely helpful

Re:Using Enumerated Types in Python by 1wd on Saturday June 06, 2020 @05:19PM (#23442311)
f.tell(offset, os.SEEK_CUR) over f.tell(offset, 1)

https://docs.python.org/3/library/os.html#os.SEEK_CUR

I wish the docs on f.tell at least mentioned the option

https://docs.python.org/3/tutorial/inputoutput.html#methods-...

Re:Using Enumerated Types in Python by remram on Saturday June 06, 2020 @10:25PM (#23444267)
Except it wasn't, os.O_WRONLY is for os.open() (equivalent of open syscall, takes numeric flags), not the built-in open() (equivalent of C fopen, takes "w" and similar strings).
Re:Using Enumerated Types in Python by comfydragon on Saturday June 06, 2020 @03:36PM (#23441687)
Python 3.8 has typing.Literal for this.
Re:Using Enumerated Types in Python by zo1 on Sunday June 07, 2020 @07:20AM (#23446577)
That's a fair point, and I'll be sure to keep an eye out for that type of magic-string usage going forward. Though most "magic string" usages are not nearly as official as the one you mention and usually occur in business-level code written by ordinary developers that may not be disciplined or experienced. Those spots most certainly need all the assistance they can get instead of relying on magic-strings, hence my comment of magic strings being bad.
Re:Using Enumerated Types in Python by 1wd on Saturday June 06, 2020 @05:23PM (#23442342)
You would have to use os.open
Re:Using Enumerated Types in Python by BiteCode_dev on Sunday June 07, 2020 @03:46AM (#23445555)
I would also have to pass the path as a first param. This was not meant to be correct, just teasy.
Re:Using Enumerated Types in Python by andrepd on Saturday June 06, 2020 @05:07PM (#23442231)
>Second, real Enums added as a language-feature along with type-hinting are almost 100% on-par with statically typed languages

This is conclusive proof that you're not actually aware of the capabilities of enums and sum types in "statically typed languages". Where's pattern matching? Exhaustivity checking? Sum types? GADTs?

Re:Using Enumerated Types in Python by rumanator on Saturday June 06, 2020 @07:50PM (#23443401)
C and C++ don't have some features in that list like pattern matching and there is no question that they represent one of the most popular statically typed languages in history.
Re:Using Enumerated Types in Python by zo1 on Sunday June 07, 2020 @07:27AM (#23446613)
Honestly, over my nearly 20 year period of programming experience (half of which was not spent on python), I can't recall ever having encountered those terms/concepts. But on the plus side, I guess I have now and I'll be sure to read up on them. Maybe I know the concepts but haven't linked them to the terms.
Re:Using Enumerated Types in Python by guest2143 on Monday June 08, 2020 @05:43PM (#23461141)
Python 4... It's just going to be Haskell.
Re:Using Enumerated Types in Python by throwgeorge on Saturday June 06, 2020 @02:27PM (#23441257)
>real Enums added as a language-feature along with type-hinting are almost 100% on-par with statically typed languages

sorry i don't understand this. i'm not trying to be pedantic but: statically typed (and type-checked) language will fail to compile ... not just warn you. that's not a 1% difference that's the entire difference (because lots of people will miss or flat out ignore ide hints).