blob: 515775755f04e7f39f9581e13c0eebda6ca434f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# check_overriding.py
class Base(object):
a = 0
class CheckOverriding(type):
"Prints a message if we are overriding a name."
def __new__(mcl, name, bases, dic):
for name, val in dic.iteritems():
if name.startswith("__") and name.endswith("__"):
continue # ignore special names
a_base_has_name = True in (hasattr(base, name) for base in bases)
if a_base_has_name:
print "AlreadyDefinedNameWarning: " + name
return super(CheckOverriding, mcl).__new__(mcl, name, bases, dic)
class MyClass(Base):
__metaclass__ = CheckOverriding
a = 1
class ChildClass(MyClass):
a = 2
|