python面向对象

来源:互联网 发布:淘宝mk著名原单店 编辑:程序博客网 时间:2024/05/21 12:44

python也是一种面向对象的编程语言。

创建类

使用class语句创建一个新类,class之后为类的名称并以某号结尾,如下实例

类的属性包括成员变量和方法,其中方法的定义和普通的函数的定义非常类似,但方法必须以self作为第一个参数

可以直接在类外通过对象名访问,如果想定义成私有的,则需在签名加2个下划线“__”

构造方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个累的实例时就会调用该方法。

构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。


析构方法__del__(self)在释放对象期间,支持重载,可以在里面运行一些释放资源的操作,不需要显示调用。

class className:

'类的帮助信息' #类文档字符串

类变量 #类体class_suite由类成员,方法,数据属性组成

def __init__(self,paramers)

def 函数(self,...)

...

在python类中定义方法通常有三种:实例方法,类方法,以及静态方法

这三者之间的区别是实例方法一般都以self作为第一个参数,必须和具体的对象实例进行绑定才能访问

而类方法以cls作为第一个参数,cls表示类本身,定义时使用@classmethod,那么通过cls引用的必定是类对象的属性和方法:


而静态方法不需要默认的任何参数,跟一般的普通函数类型,定义的时候使用@staticmethod

静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用

而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性,也有可能是实例属性(这个需要具体分析)

不过在存在相同名称的类属性和实例属性的情况先,实例属性优先级更高。


访问属性

使用(.)来访问对象的属性,使用如下类的名称访问类变量:
emp.dispalyEmployeer()

你可以添加,删除,修改类的属性,如下所示
emp1.age = 7 #添加一个‘age’属性
emp1.age = 8 #修改‘age’属性
del emp1.age #删除‘age’属性


getattr(obj,name[,default]):访问对象的属性
hasattr(obj,name):检查是否存在一个属性
setattr(obj,name,avlue):设置一个属性,如果属性不存在,会创建一个新属性
delattr(obj,name):删除属性

Python内置类属性

__dict__ :类的属性(包含一个字典,由类的数据属性组成)
__doc__:类的文档字符串
__name__:类名
__module__:类定义所在的模块(类的全名是‘__main__.className’),如果类位于一个导入模块mymod中,那么classname.__module__等于mymod
__bases__:类的所有父类构成元素(包含了以下由所有父类组成的元组)


类的继承

继承语法
class 派生类名(基类名)://...基类名写作括号里,基本类是在类定义的时候,在元组之中指明的
在python中的而继承的一些特点
1在继承中的基类的构造(__init__()方法)不会被自动调用,他需要在派生类的构造中亲自专门调用
2在调用基类的方法时,需要加上基类的类名前缀,且需要带上seld参数变量
3:python总是首先查找对应类型的方法,如果他不能在派生类中找到对应的方法,他才开始到基类中逐个查找。
先在本类中查找调用的方法,找不到才去基类中找。
如果在继承元组中列了一个以上的类,那么他就被称作“多重继承”

语法:
派生类的声明,与他们的父类类似,继承的基类列表跟在类名之后



调用子类方法
基础重载方法
下表列出了一些通用的功能,你可以子在自己的类重写。
1__init__(self[,args...])
构造函数
简单的调用方法:obj = className(args)
2__del__(self)
析构函数,删除一个对象
简单的调用方法:del obj
3__repr__(self)
转化为供解释器读取的形式
简单的调用方法:repr(obj)
4__str__(self)
用于将值转换为适于人阅读的形式
简单的调用方法:str(obj)
5__cmp__(self,x)
对象比较
简单的调用方法:cmp(obj.,x)
运算符重载
Python同样支持运算符重载

类属性和方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问,在类内部的方法中使
用时 self.__private__attr
类的方法
在类的内部,使用def 关键之可以为类定义一个方法,与一般函数定义不容,类方法必须包含参数self,且为第一个参数
类的私有方法
__private.__methond:两个下划线开头,声明该方法为私有方法,不能在类的外部使用,在类的内部调用self.__private__methods









0 0
原创粉丝点击