【Python基础】Python面向对象 - 1
来源:互联网 发布:android淘宝分类菜单 编辑:程序博客网 时间:2024/06/06 03:36
Python中的OOP其实就是在已连接命名空间对象内寻找属性而已。
类名大写!尽量
类内部的方法,通常添加一个单一下划线的前缀。
class语句
class语句一般形式:
class <name>(superclass,...): data = value def method(self,...): self.member = value
类方法
方法调用
instance.method(args... ...)
会被自动翻译为一下形式的类方法函数调用
class.method(instance,args... ...)
这两种调用形式在Python中都有效。
构造函数
如果要保证子类的构造函数也会执行超类构造时的逻辑,一般都必须通过类明确调用超类的__init__方法:
class Super: def __init__(self,x): ...default code...class Sub(Super): def __init__(self,x,y): Super.__init__(self,x) ...custom code ...
如果没有这样的调用,子类会完全取代超类的构造函数。
Python2.6和Python3.0中的抽象超类
可以分别使用特殊的类语法来实现/定义抽象基类:
Python3.0
from abc import ABCMeta,abstractmethodclass Super(metaclass=ABCMeta): @abstractmethod def method(self,...): pass
Python2.6:
class Super: __metaclass__=ABCMeta @abstractmethod def method(self,...): pass
不管哪种方法,效果都是相同的——我们不能产生一个实例,除非在类树的较低层级定义了该方法。
Python中的多态
因为Python中没有类型声明,所以Python中的多态是基于对象接口的。
如果通过参数列表进行重载方法,如:
class C: def method(self, x): ... def method(self, x, y, z): ...
这样的代码是会执行的,但是,只有最后一个定义才会起作用(就像X=1,然后X=2,结果X将是2)
运算符重载
类的伪私有属性/变量名压缩
变量名压缩
class语句内开头有两个下划线,但结尾没有两个下划线的变量名,会自动扩张,从而包含了所在类的名称。
例如,像Spam类内__X这样的变量名会自动编程_Spam__X; 原始的变量名会在头部加入一个下划线,然后是所在类名称。
可以避免多重继承时可能导致的命名冲突。用的不多。
多重继承
在class语句内,首行括号内可以列出一个以上的类。当这么做时,就是在使用所谓的多重继承:类和其实例继承了列出的所有超类的变量名。
0 0
- 【Python基础】Python面向对象 - 1
- Python面向对象基础
- python面向对象基础
- python 面向对象基础
- python面向对象基础
- python 面向对象 基础
- Python基础-面向对象基础
- Python学习基础:面向对象(1)
- python基础6:面向对象1
- python面向对象编程基础
- Python 基础08 面向对象
- Python基础08 面向对象
- Python面向对象编程基础
- Python面向对象编程基础
- python面向对象编程基础
- python 面向对象编程-基础
- python的面向对象基础
- Python面向对象编程基础
- random模块
- 在matlab下读取图像序列或视频,并保存在一个大矩阵中用于后期进行分割(备忘)
- ios中字符串的一些常见操作
- OC学习日记-继承,多态,私有属性、变量和方法,self,super,属性修饰符,description
- 黑马程序员----多线程
- 【Python基础】Python面向对象 - 1
- JPA的PAI测试
- python 2.4 pywin32 下载地址:
- UVA - 10816 Travel in Desert(枚举+生成树+最短路)
- POJ2010--Moo University-Financial Aid(二分)
- CSS/DIV
- [MDI]MDI框架下 获得每个子框架下的任意View的Menu菜单
- 【HDOJ 5056】 Boring count (排列组合)
- WPF DataGrid 绑定 DataTable