高级编程——Python面向对象 1、创建类: class 类名: '类的帮助信息' 类体 def __init__(self):构造函数,也叫作初始化方法,可以在括号内赋值,不过是默认值,self代表的是类的实例,而非类(用self,还使用其他,看个人喜欢),它代表的是当前对象的地址,而self.class则指向类 例:创建一个学生类 class student: '这是一个学生类' #注释信息,可要可不要 def __init__(self,name age): self.name = name self.age = age def __del__(self): print self.__class__.__name__,"del OK" def display(self): print "hello xiaoming" 2、创建实例对象 stu1 = student("xiaoming",27) 访问类里面的东西用"."小数点,如student.display(),也可以随意的修改属性(增、删、改、查) 额外访问属性的方法: getattr(实例对象,"属性名") 访问对象的属性 hasattr(实例对象,"属性名") 检查是否存在某个属性 setattr(实例对象,"属性名") 设置一个属性,属性存在则改动,不在则创建 delattr(实例对象,"属性名") 删除属性 3、Python内置属性 __dict__:类的属性(包含一个字典,由类的数据属性组成) __doc__:类的文档字符串,即注释 __name__:类名 __module__:类定义所在的模块 __bases__:类的所有父类构成元素(包含一个由所有父类组成的元组) 例: ret = stu1.__dict__ print ret 4、Python对象销毁(垃圾回收)即析构函数 def __del__(self)当对象结束其生命周期时,系统自动执行析构函数,该函数往往用来“清理善后”工作,回收不是立即的,是由解释器在适当的时机,将垃圾对象占用的内存空间回收 5、Python类的继承 1)在继承中,基类的构造函数不会被自动调用,它需要在其派生类的构造函数中亲自调用 2)在调用基类的方法时,需要加上基类的类名前缀,且需要带上self传参变量,区别在于类中调用普通函数时不需要带上self参数 3)Python总是首先查找对应类型的参数,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找(即现在本类中查找调用的函数,找不到再到基类(父类)中找) 4)方法重写:父类方法的功能无法满足需求时,可以在子类重写该方法,即同样的函数名,只不过是在子类中进行编写 基础重载方法: __init__:构造函数 调用方法:对象=类名(参数) stu1=student("john",27) __del__:析构函数 调用方法:del 对象 __repr__:转化为供解释器读取的形式 调用方法:repr(对象) __str__:用于将值转化为适于人阅读的形式 调用方法:str(对象) __cmp__:对象比较 调用方法:cmp(对象,x) 除此之外还支持运算符重载 6、Python类的属性方法 类的私有属性:__private__attrs两个下划线开头,声明该属性为私有,不能在类的外部被使用或进行直接访问,在类内部的访问:self.__private__attrs。 例: __data=0 data为私有的,访问方式:self.__data 类的方法:在类的内部,用def关键字定义一个方法,与一般函数不同,类方法必须包含self参数,且为第一个参数,例: def test(self) 类的私有方法:__private_method(),两个下划线开头,声明该方法为私有方法,不能在类的外部调用,在类的内部调用:self.__private_method,例: def __test(self) self.__test 单、双、头尾下划线说明 __foo__:定义的是特殊方法,一般是系统定义名字,类似__init__之类 _foo:单划线定义的是protected类型的变量,即保护类型,只能允许其本身与子类进行访问,不能用于 from module import * __foo:双下划线表示的是私有变量,只是能允许这个类本身进行访问
python入门(05)
最新推荐文章于 2024-07-30 17:23:09 发布