🙄

TypeError: can only concatenate str (not "property") to str

2024/11/26に公開
TypeError: can only concatenate str (not "property") to str

または反対だと

TypeError: unsupported operand type(s) for +: 'property' and 'str'
コードはこちらです。
```python
class Test:
    @property
    def test1():
        return "world"
    test2 = "hello " + test1

print(Test().test2) # hello world

ちなみに、これはうまくいきます。

class Test:
    test1 = "world"
    test2 = "hello " + test1

print(Test().test2) # hello world

原因

test1はstaticでないが、test2はstaticだから。(完全にPythonOOPの勘違いでした)
(エラーメッセージ分かりやすくしてほしい(=厳密にしてほしい))

対処法

test2も@propertyにすれば良いです。または、__init__でも良いです。とりあえず、test1だけstaticなことがなければ良いです。

class Test:
    @property
    def test1():
        return " world"

    @property
    def test2():
        return "hello " + test1

Discussion