如何创建直接变异变量而不返回任何内容的方法?

2024-09-29 23:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

例如

a = ["*", "s", "u", "y"]
a.pop()
output:
a = ['*', 's', 'u']

我想创建类似的方法,我该怎么做

更新:根据@azro的建议,我正在用他对str的建议更新这篇文章,我将尝试在列表中复制相同的内容(基本上我只是将str改为list)

class WeirdClass:
    value: list

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

    def weird(self):
        self.value = self.value * 2

    def __list__(self):
        return self.value


a = WeirdClass(["a", 9]) 
print(a)  # Got <__main__.WeirdClass object at 0x000001EB64E32FD0> ; Expected ["a", 9]

a.weird() 
print(a)  # Got <__main__.WeirdClass object at 0x000001EB64E32FD0> ; Expected ['a', 9, 'a', 9]

Tags: selfobjectvaluemaindefpop建议at
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:52

这里的^{}方法用于构建实例的良好表示形式,即字符串。它与属性类型没有任何关系

通用示例

class WeirdClass:
    def __init__(self, value1, value2):
        self.value1 = value1
        self.value2 = value2
    def __str__(self):
        return f"{self.__class__.__name__}:[{self.value1}-{self.value2}]"

a = WeirdClass("a", 9)
print(a)  # WeirdClass:[a-9]

您需要自己的类来创建逻辑

class WeirdClass:
    value: str

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

    def weird(self):
        self.value = self.value * 2

    def __str__(self):
        return self.value


a = WeirdClass("hey")
print(a)  # hey

a.weird()
print(a)  # heyhey

带有self.value的示例是list

class WeirdClass:
    value: list[str]
    def __init__(self, value):
        self.value = value
    def weird(self):
        self.value = self.value * 2  # duplicate list
    def __str__(self):
        return str(self.value)

a = WeirdClass(["a", 9])
print(a)  # ['a', 9]

a.weird()
print(a)  # ['a', 9, 'a', 9]

相关问题 更多 >

    热门问题