簡體   English   中英

Python運算符重載加入

[英]Python operator overloading for join

我有一個類,如果在字符串的上下文中使用,實例應該表示為字符串。 確切地說,應該返回指向字符串的屬性。

該類看起來如下並且到目前為止工作:

class Test:
    string = ""

    def __init__(self, value=""):
        self.string = value

    def __repr__(self):
        return str(self.string)

    def __str__(self):
        return self.__repr__()

    def __add__(self, other):
        return "%s%s" % (self.string, other)

    def __radd__(self, other):
        return "%s%s" % (other, self.string)

不幸的是,當我嘗試這樣的事情時,我得到一個TypeError:

>>> "-".join([Test("test"), Test("test2")])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, instance found

對字符串執行相同操作,我得到了預期的結果:

>>> "-".join(["test", "test"])
'test-test'
>>> 

我很確定我只是錯過了正確的運算符重載功能。 有人可以用列表中的類實例來實現這個目的嗎?

謝謝。

join需要元素為字符串,如下所示: https//docs.python.org/3/library/stdtypes.html#str.join

您需要將對象顯式轉換為字符串,例如:

"-".join(map(str, [Test("test"), Test("test2")]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM