Python3面向对象编程

本文介绍了Python编程中的类命名规范、构造函数、导入方式等基础知识,并详细解释了私有属性的实现方法、异常处理机制、属性封装技术等内容。同时,还探讨了鸭子类型的概念及其在减少继承需求中的应用。

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__方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值