mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	For a dynamically constructed type object, fill in the tp_doc slot with a copy of the argument dict's "__doc__" value, provided the latter exists and is a string. NOTE: I don't know what to do if it's a Unicode string, so in that case tp_doc is left NULL (which shows up as Py_None if you do Class.__doc__). Note that tp_doc holds a char*, not a general PyObject*.
		
			
				
	
	
		
			108 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""A module to test whether doctest recognizes some 2.2 features,
 | 
						|
like static and class methods.
 | 
						|
 | 
						|
>>> print 'yup'  # 1
 | 
						|
yup
 | 
						|
"""
 | 
						|
 | 
						|
import test_support
 | 
						|
 | 
						|
class C(object):
 | 
						|
    """Class C.
 | 
						|
 | 
						|
    >>> print C()  # 2
 | 
						|
    42
 | 
						|
    """
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        """C.__init__.
 | 
						|
 | 
						|
        >>> print C() # 3
 | 
						|
        42
 | 
						|
        """
 | 
						|
 | 
						|
    def __str__(self):
 | 
						|
        """
 | 
						|
        >>> print C() # 4
 | 
						|
        42
 | 
						|
        """
 | 
						|
        return "42"
 | 
						|
 | 
						|
    class D(object):
 | 
						|
        """A nested D class.
 | 
						|
 | 
						|
        >>> print "In D!"   # 5
 | 
						|
        In D!
 | 
						|
        """
 | 
						|
 | 
						|
        def nested(self):
 | 
						|
            """
 | 
						|
            >>> print 3 # 6
 | 
						|
            3
 | 
						|
            """
 | 
						|
 | 
						|
    def getx(self):
 | 
						|
        """
 | 
						|
        >>> c = C()    # 7
 | 
						|
        >>> c.x = 12   # 8
 | 
						|
        >>> print c.x  # 9
 | 
						|
        -12
 | 
						|
        """
 | 
						|
        return -self._x
 | 
						|
 | 
						|
    def setx(self, value):
 | 
						|
        """
 | 
						|
        >>> c = C()     # 10
 | 
						|
        >>> c.x = 12    # 11
 | 
						|
        >>> print c.x   # 12
 | 
						|
        -12
 | 
						|
        """
 | 
						|
        self._x = value
 | 
						|
 | 
						|
    x = property(getx, setx, doc="""\
 | 
						|
        >>> c = C()    # 13
 | 
						|
        >>> c.x = 12   # 14
 | 
						|
        >>> print c.x  # 15
 | 
						|
        -12
 | 
						|
        """)
 | 
						|
 | 
						|
    def statm():
 | 
						|
        """
 | 
						|
        A static method.
 | 
						|
 | 
						|
        >>> print C.statm()    # 16
 | 
						|
        666
 | 
						|
        >>> print C().statm()  # 17
 | 
						|
        666
 | 
						|
        """
 | 
						|
        return 666
 | 
						|
 | 
						|
    statm = staticmethod(statm)
 | 
						|
 | 
						|
    def clsm(cls, val):
 | 
						|
        """
 | 
						|
        A class method.
 | 
						|
 | 
						|
        >>> print C.clsm(22)    # 18
 | 
						|
        22
 | 
						|
        >>> print C().clsm(23)  # 19
 | 
						|
        23
 | 
						|
        """
 | 
						|
        return val
 | 
						|
 | 
						|
    clsm = classmethod(clsm)
 | 
						|
 | 
						|
def test_main():
 | 
						|
    import test_doctest2
 | 
						|
    EXPECTED = 19
 | 
						|
    f, t = test_support.run_doctest(test_doctest2)
 | 
						|
    if t != EXPECTED:
 | 
						|
        raise test_support.TestFailed("expected %d tests to run, not %d" %
 | 
						|
                                      (EXPECTED, t))
 | 
						|
 | 
						|
# Pollute the namespace with a bunch of imported functions and classes,
 | 
						|
# to make sure they don't get tested.
 | 
						|
from doctest import *
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    test_main()
 |