cython

Форк
0
/
subclasses.pyx 
50 строк · 1.2 Кб
1
cdef class Base0:
2
    pass
3

4
cdef class Base(Base0):
5
    pass
6

7
cdef class Foo(Base):
8
   cdef fooit(self):
9
       return 42
10

11
cdef class Bar(Foo):
12
   pass
13

14
cdef class Bam(Bar):
15
   pass
16

17
cdef class Zoo(Bam):
18
   pass
19

20

21
def fooit(Foo foo):
22
    """
23
    >>> zoo = Zoo()
24
    >>> for cl in (Zoo, Bam, Bar, Foo, Base, Base0): assert isinstance(zoo, cl)
25
    >>> fooit(zoo)
26
    42
27
    >>> bam = Bam()
28
    >>> for cl in (Bam, Bar, Foo, Base, Base0): assert isinstance(bam, cl)
29
    >>> fooit(bam)
30
    42
31
    >>> bar = Bar()
32
    >>> for cl in (Bar, Foo, Base, Base0): assert isinstance(bar, cl)
33
    >>> fooit(bar)
34
    42
35
    >>> foo = Foo()
36
    >>> for cl in (Foo, Base, Base0): assert isinstance(foo, cl)
37
    >>> fooit(foo)
38
    42
39
    >>> base = Base()
40
    >>> for cl in (Base, Base0): assert isinstance(base, cl)
41
    >>> fooit(base)
42
    Traceback (most recent call last):
43
    TypeError: Argument 'foo' has incorrect type (expected subclasses.Foo, got subclasses.Base)
44
    >>> base0 = Base0()
45
    >>> for cl in (Base0,): assert isinstance(base0, cl)
46
    >>> fooit(base0)
47
    Traceback (most recent call last):
48
    TypeError: Argument 'foo' has incorrect type (expected subclasses.Foo, got subclasses.Base0)
49
    """
50
    return foo.fooit()
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.