On Tue, Jan 21, 2020 at 1:49 PM Johan Vergeer <johanvergeer@gmail.com> wrote:
I have worked with both C# and Python for a while now and there is one feature of C# I'm missing in the Python language.

This feature is the "nameof" operator. (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/nameof).
The place I use this the most in C# is in `ToString()` methods or logging messages.
This makes sure the developer cannot forget to update the name of a member.

As an example I created this `Person` class.

```
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person(name: {self.name}, age: {self.age})"
```

With the `nameof` operator this would look like the following:

```
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"{nameof(Person)}({nameof(self.name)}: {self.name}, {nameof(self.age)}: {self.age})"
```

What do you think about this?

We can get the name of the class with "type(ins).__name__".  If you want to get the names right it would be easier to loop over a list of strings and use 'getattr' on them, which would mean you only have to change the name in one place rather than two.