Python如何显式地改变类对象的求值?

2024-04-23 10:41:41 发布

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

函数my_func获取一个参数,可以是整数或类:

class SomeClass:
    val = 0
    def __init__(self):
        self.val = 0
    def set(self, val):
        self.val = val
    def get(self):
        return self.val 

我想把这两种类型作为一个整体来处理。 我是否可以明确地告诉Python,对SomeClass类型的对象的求值应该返回对象的val字段,而不是它自己的对象。你知道吗

这意味着要(以某种方式)完成以下代码:

s = SomeClass()
s.set(3)
test = s # this line should assign value 3(int) to test
test # prints 3

Tags: 对象函数testself类型参数initmy
1条回答
网友
1楼 · 发布于 2024-04-23 10:41:41

不是真的,不是,不是你想要的那种广义的。您可以重载许多操作,而不是赋值。这是因为变量只是对对象的引用,没有附加类型。在任何给定的时间,都可以有许多对对象的引用。重要的是你如何使用这个对象,而不是你给它分配了什么。你知道吗

相反,我将使您的类转换为整数。您可以使用^{} hook;setter将显式调用传入的对象上的int()

class SomeClass:
    val = 0
    def __init__(self):
        self.val = 0
    def set(self, val):
        self.val = int(val)
    def get(self):
        return self.val 
    def __int__(self):
        return self.val

如果总是在整数运算中使用这些对象,则可以为这些操作添加挂钩,例如^{}^{};同样,使用对象的上下文才是最重要的。你知道吗

相关问题 更多 >