发布于2021-03-02 15:35 阅读(128) 评论(0) 点赞(23) 收藏(1)
0
1
2
3
4
5
这与sympy模块有关。例如,
x, y = symbols('x y')
expr = Mul(x * y)
type(expr) == Mul
将返回true。然而,
x, y = 1, 2
expr = Mul(x * y)
type(expr) == Mul
将返回false。更具体地说,第二种情况下的expr是Integer(2),所以我想知道Mul是否是类型,如何将expr创建为Integer?显然这是合理的,因为1 * 2应该只是2,而不是表达式,但是如何实现呢?我考虑过Mul可能是根据情况返回的函数的可能性,但这并没有说明它也可以是类型
这是使用__new__
而不是来完成的__init__
:
>>> class A: pass
...
>>> class B:
... def __new__(cls, arg):
... if arg < 0:
... return A()
... else:
... return super().__new__(cls)
...
>>> B(1)
<__main__.B object at 0x7fc72df68b20>
>>> B(-1)
<__main__.A object at 0x7fc72df68880>
https://docs.python.org/3/reference/datamodel.html#object.__new_ _
0
1
2
3
4
5
6
7
8
9
作者:黑洞官方问答小能手
链接: https://www.pythonheidong.com/blog/article/869889/32ca8d53150a704825ed/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!