Python说文解字_半成品再加工

1. 其实在编写代码的时候,根据需求和程序员的喜好,对现有类中的属性和方法进行二次加工,原先所给与的属性和方法贴合自己想要的需求。这就是我们常说的“重写”和二次封装。

 

2. 比如我们对现有的库list进行二次封装,添加上判断的语句。

  代码1:

class EvenOnly(list):
    def append(self, integer):
        if not isinstance(integer,int):
            raise TypeError("Only integers can be add")
        elif integer % 2:
            raise ValueError("Only even numbers can be added")
        super().append(integer)


e = EvenOnly()
e.append('a string')
#     raise TypeError("Only integers can be add")
# TypeError: Only integers can be add

e.append(3)
#     raise ValueError("Only even numbers can be added")
# ValueError: Only even numbers can be added

e.append(2)

  说明1:我们在这里发现了,这个类继承的是list这个父类,对父类中的append方法进行了二次加工和封装。

 

class EvenOnly(list):
    def append(self, integer):
        if not isinstance(integer,int):
            raise TypeError("Only integers can be add")
        elif integer % 2:
            raise ValueError("Only even numbers can be added")
        else:
            return integer


e = EvenOnly()
print(e.append(2))
# 2

  这样这个方法是不是更好用呢?

 

2.代码的重复性:

  如何避免代码的重复性?最简单的方案就是把代码放到一个函数中,通过参数来处理不同的情况。这样做不是很符合面向对象的方案,但是通常是最优方案。

 

posted @ 2019-06-01 15:48  时海涛|Thomas  阅读(217)  评论(0编辑  收藏  举报