Python has very intuitive and clear syntax, except when it comes to method definitions, particularly dunder methods.
class Vec(object): def __init__(self, x, y): self.x, self.y = x, y def __add__(self, other): return Vec(self.x + other.x, self.y + other.y) def __getitem__(self, key): return self.x if key == 'x' else self.y if key == 'y' else None def __contains__(self, item): return self.x == item or self.y == item def __bool__(self): return self.x or self.y def display(self): print('x:', self.x, 'y:', self.y) Having to declare a self parameter is confusing since you don't pass anything in when you call the method on an instance (I am aware of bound vs. unbound methods, etc. but a beginner would not be). The double underscores are also confusing. I propose syntactic sugar to make these method signatures more intuitive and clean. class Vec(object): def class(x, y): self.x, self.y = x, y def self + other: return Vec(self.x + other.x, self.y + other.y) def self[key]: return self.x if key == 'x' else self.y if key == 'y' else None def item in self: return self.x == item or self.y == item def bool(self): return self.x or self.y def self.display(): print('x:', self.x, 'y:', self.y) There are some immediate problems with this, such as `bool(self)` being indistinguishable from a regular method signature and `class(x, y)` not declaring the `self` identifier. These and other problems can be solved to some extent, but I thought I would see if there is any interest around this before going too in depth.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/