| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- class A:
- def __init__(self, a, __b):
- self.a = a
- self.__b = __b
- @property
- def b(self):
- return self.__b
- def add(self):
- return self.a + self.b
- def sub(self):
- return self.a - self.b
-
- a = A(1, 2)
- assert a.add() == 3
- assert a.sub() == -1
- assert A.__base__ is object
- class B(A):
- def __init__(self, a, b, c):
- super().__init__(a, b)
- self.c = c
- def add(self):
- return self.a + self.b + self.c
- def sub(self):
- return self.a - self.b - self.c
- assert B.__base__ is A
- b = B(1, 2, 3)
- assert b.add() == 6
- assert b.sub() == -4
- class C(B):
- def __init__(self, a, b, c, d):
- super().__init__(a, b, c)
- self.d = d
- def add(self):
- return self.a + self.b + self.c + self.d
- def sub(self):
- return self.a - self.b - self.c - self.d
-
- assert C.__base__ is B
- c = C(1, 2, 3, 4)
- assert c.add() == 10
- assert c.sub() == -8
- class D(C):
- def __init__(self, a, b, c, d, e):
- super().__init__(a, b, c, d)
- self.e = e
- def add(self):
- return super().add() + self.e
- def sub(self):
- return super().sub() - self.e
-
- assert D.__base__ is C
- d = D(1, 2, 3, 4, 5)
- assert d.add() == 15
- assert d.sub() == -13
- assert isinstance(1, int)
- assert isinstance(1, object)
- assert isinstance(C, type)
- assert isinstance(C, object)
- assert isinstance(d, object)
- assert isinstance(d, C)
- assert isinstance(d, B)
- assert isinstance(d, A)
- assert isinstance(object, object)
- assert isinstance(type, object)
- assert isinstance(1, (float, int))
- assert isinstance(1, (float, object))
- assert not isinstance(1, (float, str))
- assert isinstance(object, (int, type, float))
- assert not isinstance(object, (int, float, str))
- try:
- isinstance(1, (1, 2))
- exit(1)
- except TypeError:
- pass
- try:
- isinstance(1, 1)
- exit(1)
- except TypeError:
- pass
- class A:
- a = 1
- b = 2
- assert A.a == 1
- assert A.b == 2
- class B(A):
- b = 3
- c = 4
- # assert B.a == 1 ...bug here
- assert B.b == 3
- assert B.c == 4
- if 1:
- class TrueClass:
- pass
- else:
- class FalseClass:
- pass
- assert TrueClass
- # staticmethod and classmethod
- class A():
- dd = 2
- def __init__(self):
- self.a = 1
-
- @staticmethod
- def static_method(txt):
- return txt
-
- @classmethod
- def class_method(cls, txt):
- return cls.__name__ + txt
- assert A.static_method(123) == 123
- assert A.class_method('123') == 'A123'
- assert A().static_method(123) == 123
- assert A().class_method('123') == 'A123'
- assert A.dd == 2
- assert A().dd == 2
- class B(A): pass
- assert B.dd == 2
- assert B().dd == 2
- assert B.static_method(123) == 123
- assert B.class_method('123') == 'B123'
- assert B().static_method(123) == 123
- assert B().class_method('123') == 'B123'
- # test super() with classmethod
- class BaseClass:
- @classmethod
- def f(cls):
- return 'BaseClass'
- class DerivedClass(BaseClass):
- @classmethod
- def f(cls):
- return super().f()
-
- assert DerivedClass.f() == 'BaseClass'
|