Getty fully qualified class name from class object

2023-08-22 Thread Ian Pilcher via Python-list

How can I programmatically get the fully qualified name of a class from
its class object?  (I'm referring to the name that is shown when str()
or repr() is called on the class object.)

Neither the __name__ or __qualname__ class attributes include the
module.  For example:

  >>> import logging

  >>> str(logging.Handler)
  ""

  >>> logging.Handler.__name__
  'Handler'
  >>> logging.Handler.__qualname__
  'Handler'

How can I programmatically get 'logging.Handler' from the class object?

--

Google  Where SkyNet meets Idiocracy

--
https://mail.python.org/mailman/listinfo/python-list


Re: Getty fully qualified class name from class object

2023-08-22 Thread Greg Ewing via Python-list

On 23/08/23 2:45 am, Ian Pilcher wrote:

How can I programmatically get 'logging.Handler' from the class object?


Classes have a __module__ attribute:

>>> logging.Handler.__module__
'logging'

--
Greg


--
https://mail.python.org/mailman/listinfo/python-list


Re: divmod with negative Decimal values

2023-08-22 Thread Thomas Passin via Python-list

On 8/18/2023 5:14 AM, Rob Cliffe via Python-list wrote:

divmod(Decimal("-1"), 60)


It's not divmod per se, but the modulus operation:

from decimal import Decimal
D1 = Decimal(-1)
D1 % 60  # Decimal(-1)

fmod() performs the same way:

from math import fmod
fmod(-1, 60)  # -1.0

From the Python docs on math.fmod:

"math.fmod(x, y)
Return fmod(x, y), as defined by the platform C library. Note that the 
Python expression x % y may not return the same result. The intent of 
the C standard is that fmod(x, y) be exactly (mathematically; to 
infinite precision) equal to x - n*y for some integer n such that the 
result has the same sign as x and magnitude less than abs(y). Python’s x 
% y returns a result with the sign of y instead, and may not be exactly 
computable for float arguments. For example, fmod(-1e-100, 1e100) is 
-1e-100, but the result of Python’s -1e-100 % 1e100 is 1e100-1e-100, 
which cannot be represented exactly as a float, and rounds to the 
surprising 1e100. For this reason, function fmod() is generally 
preferred when working with floats, while Python’s x % y is preferred 
when working with integers."


I'm not sure this is helpful in a practical way here ...




--
https://mail.python.org/mailman/listinfo/python-list