面向对象高级编程

1._slots_

限制类实例添加的属性信息

2.@property

广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。

如:

class Screen(object):
    @property
    def width(self):
        return self.width

    @width.setter
    def width(self,value):
        self.width=value

    @property
    def height(self):
        return self._height

    @height.setter
    def height(self,value):
        self.height = value

    @property
    def solution(self):
        return self.height*self.width

3.多重继承

MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。

4.定制类

_str_:返回用户看到的字符串,_repr_返回程序开发者看到的字符串

_iter_:如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。

_getiter_:实现像list按下标取元素,需要实现该方法;list的切片方法fib直接使用会报错,原因是__getitem__()传入的参数可能是一个int,也可能是一个切片对象slice,所以要做判断

_getatter_:当调用类或属性不存在时,我们用该方法,动态返回一个属性

_call_:任何类,只需要定义一个__call__()方法,就可以直接对实例进行调用。

5.枚举类型

6.使用元类

 

 

 

 

posted @ 2019-11-18 08:32  行之!  阅读(190)  评论(0编辑  收藏  举报