class RoomMetaclass(type):
def __new__(cls, name, bases, attrs):
# 通过area方法计算面积
attrs['area'] = lambda self, long, wide: self.append(long * wide)
return type.__new__(cls, name, bases, attrs)
class Room(list, metaclass=RoomMetaclass):
pass
class House(Room):
pass
def area_house(list):
s = 0
for x in list:
s += x
return s
h = Room()
h = House()
h.area(60, 100)
h.area(45, 33)
print('一共有{0}个房间,每个房间的面积为{1},总面积为{2}。'.format(len(h), h, h.area_house()))
输出结果:
一共有2个房间,每个房间的面积为[6000, 1485],总面积为7485。