New submission from Elvis Pranskevichus:

Consider the following:

import decimal

class MyDecimal(decimal.Decimal):
    def __new__(cls, value):
        return super().__new__(cls, value)

a = decimal.Decimal('1.0')
b = MyDecimal(a)
c = MyDecimal('1.0')

print(type(a), type(b), isinstance(b, MyDecimal), type(c), isinstance(c, 
MyDecimal))

Running the above in 3.3 produces:

<class 'decimal.Decimal'> <class 'decimal.Decimal'> False <class 
'__main__.MyDecimal'> True

Which shows that Decimal.__new__(cls, Decimal()) will always return its 
argument regardless of cls.

----------
messages: 175121
nosy: Elvis.Pranskevichus, skrah
priority: normal
severity: normal
status: open
title: CDecimal disregards subclass passed into __new__ when value argument is 
an instance of Decimal
type: behavior
versions: Python 3.3, Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16431>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to