-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix __str__
call for all Python objects
#342
Comments
Can you explain when this is a problem when using PythonScript? |
Let's take >>> editor.write('text') # 'text'.__str__() == 'text'
>>> editor.write(42) # (42).__str__() == '42' So far it looks fine with instances of >>> class Foo:
... def __str__(self):
... return __class__.__name__.lower()
...
>>> editor.write(Foo()) # Foo().__str__() == 'foo'
>>> editor.write(Foo) # There is no `self` to auto insert into the `__str__` call.
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: Foo.__str__() missing 1 required positional argument: 'self' One might expect the value of P.S. In this example >>> class Meta(type):
... def __str__(cls):
... return cls.__name__.upper()
...
>>> class Bar(metaclass=Meta):
... pass
...
>>> str(Bar)
'BAR'
>>> editor.write(Bar)
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: descriptor '__str__' of 'object' object needs an argument |
I understand what you mean, but usually PythonScript is used to manipulate Notepad++, Scintilla and the buffer content, but
I guess you're right |
This isn't high priority, or might not even get addressed. Regardless, it is a bug so I had to bring it to your attention. |
PythonScript/PythonScript/src/ScintillaWrapper.cpp
Line 61 in 52f7d7b
Naively calling
__str__()
on an object assumes it is bound, which is not the case for non-instantiated classes.Would it be possible to use Python's
str
builtin?The text was updated successfully, but these errors were encountered: