一.类(class)和对象(object)
对象是现实中的物体或实例,面向对象即是把一切物体看成对象,在对象和对象之间用方法建立联系,类是将拥有相同属性和行为的对象分为一组,是用来描述对象的工具。
2.类的创建语法
class 类名(继承列表)
""" 类文档字符串"""
实例方法(类内的函数method)定义
类变量(class variable)定义
类方法(@classmethod)定义
静态方法(@staticmethod)定义
3.类的作用
可以用类创建一个或者多个此类的对象,即实例
类里面的方法和变量可以被此类所创建的所有实例共同拥有
4.类的说明
类名必须是标识符(与变量名命名规则相同,首字母最好大写)
类名实质上也是一个变量
类的定义最后面要加两个空格以告诉解释执行器,类的定义已经结束
二.对象(实例)
1.实例的创建
利用构造函数创建:
表达式:类名([创建传参列表])[ ]里面的内容可以省略
示例:
class Book():
pass
book1= Book()#创建第一本书,即书这个类的实例1
book2= Book()#创建第二本书,即书这个类的实例2
print(id(book1))#打印第一本书的id地址
print(id(book1))#打印第二本书的id地址
print(book1 is book2)#返回的是False,说明是两本书
2.实例说明:
(1)实例有自己的作用域和命名空间,可以为该实例添加属性(变量)
(2)实例可以调用类的方法
(3)实例可以访问类中的类变量
3.实例的属性
(1)属性的使用语法: 实例.属性名
(2)属性的命名规则:首次为属性赋值则创建该属性,再次为属性赋值则改变属性的绑定关系
示例:
class Book():
pass
book1= Book()
book1.cover='black'#创建属性 cover
book1.cover='white'#改变属性的值
print(book1.cover)#得到white
(3)删除属性
del 实例.属性
4.预置的实例属性
__dict__属性:用于绑定一个存储此实例的变量的字典
__class__属性:用于绑定创建此实例的类
示例:
class Book():
pass
book1= Book()
book1.color='yellow'
print(book1.__dict__) #得到结果{'color': 'yellow'}
book1.__dict__['kind']='fiction' #得到结果{'color': 'yellow', 'kind': 'fiction'}
print(book1.__dict__)
5.实例的方法
(1)语法:
class 类名(继承列表):
def 实例方法(self,参数1,参数2,...):
语句块
(2)作用:用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
(3)说明:实例方法的实质是函数,是定义在类内的函数;实例方法的第一个参数代表调用这个方法的实例,一般命名’self’
(4)实例方法的调用语法
实例.实例方法名(调用参数) 或者 类名.实例方法名(实例,调用参数)
示例:
class Book():
def book_cover(self,color):#第一个参数为self
print("书的封面颜色是",color)
book1= Book()
book1.book_cover("yellow")#调用语法一,book1传给self,"yellow"传给color
Book.book_cover(book1,'yellow')#调用语法二
三.类的初始化方法
1.作用:对新创建的对象添加属性等必需资源
2.语法格式
class 类名:
def __init__(self,[,参数列表]):#[]代表里面的内容可以省略
语句块
3.说明
(1)初始化方法名__init__不可变
(2)初始化方法在创建实例后自动调用,且将实例自身通过第一个参数self传入__init__方法
(3)构造函数的实参将通过__init__方法的参数列表传到__init__方法中
(4)初始化方法如果要return语句返回,则必须返回None
(5)__init__里面的属性值可以通过后面设置新的方法来改变
示例:
class Book():
def __init__(self,color):
self.color=color
book1= Book("yellow")#这里面的参数传给__init__方法,且数量要和参数数量一致
四.析构方法
1.作用:在对象被销毁之前被调用,主要负责清理对象所占用的资源
2.语法格式
class 类名:
def __del__(self):
语句块