On Tue, Jan 21, 2020 at 1:49 PM Johan Vergeer <johanverg...@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.
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/BS4TX33ADL6TQ3HG3CVBVCNO4QHS2TKK/ Code of Conduct: http://python.org/psf/codeofconduct/