Python3面向对象编程

1、类名用驼峰法,每个单词首字母大写。

2、Python有构造函数__new__和初始化函数__init__。

3、绝对导入:需要指明模块、函数的完整路径。                            相对导入:.  ..

4、每个模块的__name__属性,导入的时候赋值模块名字,直接执行的时候赋值__main__。

5、一个类里的所有属性和方法都是公共的,可以加_前缀提示是私有的,但是不能阻止被访问。加双下划线前缀,要访问的话必须进行名称改编,_<classname>__xxx。

6、super()函数,返回一个父类实例。**kwargs,多重继承的参数传递。

7、钻石继承:多个父类继承自同一祖先,继承结构形似钻石。super解决了钻石问题。宽度优先。

8、鸭子类型:走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

鸭子类型减少继承和多重继承的需要,用鸭子类型模拟多个超类之一。鸭子类型的对象只需要提供那些真正要访问的方法和属性。鸭子对象不需要提供一个可用对象的完整接口,它只需要提供实际使用的接口就行了。

9、异常类都继承自BaseException。所有的错误类都继承自Exception。

raise xxx; try ... except xxxException; except(xxxException,yyyException);

如果已经在异常处理中,一个不带参数的raise关键字会重新抛出最后一个异常。

可以使用as关键字把捕捉到的异常作为变量来访问。except xxxException as e;

try ... except ... else ... finally ...

大部分异常类都是Exception的子类,SystemExit和KeyboardInterrupt是直接从BaseException继承的。

当使用except语句没有指定任何类型的异常,它会捕捉所有BaseException的子类。

10、property属性可以使得私有属性可以去掉_前缀来进行访问。property(_get_attr,_set_attr)。可使用@propery装饰器。

11、python默认禁止object拥有任何属性,其他一些内置数据结构也一样。

命名元组(collections.namedtuple)是含有属性的元组,它是没有行为的对象,

defaultdict,

sort对列表进行排序,如果要对自定义的类排序则需要定义__lt__等方法。

12、python内置函数:len、reversed、sort、enumerate创建索引、zip函数是他自身的反函数、sorted(不仅适用于列表,更适用于所有的迭代器)、min、max、sum、all、any、eval、exec、compile、hasattr、getattr、setattr、delattr,可以通过dir(__builtins__)。

13、任何可迭代的对象都可以作为列表解析的输入,集合解析,字典解析。

生成器表达式使用与解析相同的语法,但是不会创建一个最终的容器对象。

迭代器实现__iter__和__next__。

函数也是对象。函数也可作为对象的属性,可以动态改变,虽然用起来很危险,但仍有它的用处,通常在运行时替换或者添加方法(monkey-patching,猴子补丁)会用于自动化测试或者修补现场bug。

可调用对象:定义__call__方法。

 

猜你喜欢

转载自blog.csdn.net/chenkaifang/article/details/81265485