| @@ 106-124 (lines=19) @@ | ||
| 103 | return False |
|
| 104 | ||
| 105 | ||
| 106 | def is_class_method(klass, attr, value=None): |
|
| 107 | """Test if a value of a class is class method. |
|
| 108 | ||
| 109 | Args: |
|
| 110 | klass: The class. |
|
| 111 | attr: Attribute name. |
|
| 112 | value: Attribute value. |
|
| 113 | """ |
|
| 114 | if value is None: |
|
| 115 | value = getattr(klass, attr) |
|
| 116 | assert getattr(klass, attr) == value |
|
| 117 | ||
| 118 | for cls in inspect.getmro(klass): |
|
| 119 | if inspect.isroutine(value): |
|
| 120 | if attr in cls.__dict__: |
|
| 121 | binded_value = cls.__dict__[attr] |
|
| 122 | if isinstance(binded_value, classmethod): |
|
| 123 | return True |
|
| 124 | return False |
|
| 125 | ||
| 126 | ||
| 127 | def _get_members(klass, tester_func, return_builtin): |
|
| @@ 85-103 (lines=19) @@ | ||
| 82 | return False |
|
| 83 | ||
| 84 | ||
| 85 | def is_static_method(klass, attr, value=None): |
|
| 86 | """Test if a value of a class is static method. |
|
| 87 | ||
| 88 | Args: |
|
| 89 | klass: The class. |
|
| 90 | attr: Attribute name. |
|
| 91 | value: Attribute value. |
|
| 92 | """ |
|
| 93 | if value is None: |
|
| 94 | value = getattr(klass, attr) |
|
| 95 | assert getattr(klass, attr) == value |
|
| 96 | ||
| 97 | for cls in inspect.getmro(klass): |
|
| 98 | if inspect.isroutine(value): |
|
| 99 | if attr in cls.__dict__: |
|
| 100 | binded_value = cls.__dict__[attr] |
|
| 101 | if isinstance(binded_value, staticmethod): |
|
| 102 | return True |
|
| 103 | return False |
|
| 104 | ||
| 105 | ||
| 106 | def is_class_method(klass, attr, value=None): |
|