1.类的定义
语法:class 类名: #类名不要用中文 例:class Person:#定义Person类
类的属性 name = 'sakura' #空体,什么也没有
实例:实例名=类名() obj = Person() #Person的一个实例
类属性的调用(通过运算符".") print(Person.name) #sakura
1)类名.属性名 print(obj.name) #sakura
2)实例名.属性名
注:若类中无某属性,可通过类名.属性名/实例名.属性名来添加
类是事物的抽象,包含了事物的属性,而实例是事物的具体表现(类是"人",而实例"北秋"是人中的具体表现)
类是一个对立存放(属性/方法)的空间,不同实例之间互相不可见,实例之间无法互相访问。
私有属性
定义:_属性名 #一个下划线,外部可直接访问
__属性名 #两个下划线,外部不可直接访问
说明:私有属性更多的是一种规范/约定,没有真正限制的目的,部分仍可调用,后边的内容会更详细的提及私有 属性。
2.类的方法
即在类中定义方法(函数),方法为类所有的实例所共有。
规则:class 类名:
属性
def 方法名(self, 参数列表):#self为默认传入的实例名,即实例调用实例对象本身
内容
调用:实例名.方法名(),方法中可以调用类的属性(self.属性名)
例:class Person:
age=18 #属性可以是变量
def A(): #属性也可以是方法
return 666
def command(x):
print(x,self.age,self.A())
a=Person()
a.command('sakura') #默认command方法的实例是a,输入sakura 18 666
Person.command('sakura') #报错,方法无实例 Person.command(a,'sakura') 正确,传的实例为a
注:属性可以是变量,函数。方法可通过self.函数名来调用属性中的函数
3.初始化、析构
初始化
即传入参数列表初始化类的属性
方法:__init__ #在类的实例化后自动被调用,实现类的初始化
析构
用于函数使用完后销毁
方法:__del__
例:class Person:
def __init__(self, name, age):
self.name=name #类的属性赋值为参数列表中的参数
self.age=age
def __del__(self):
print(self.name, '已被销毁')
a=Person('sakura',18)
print(a.name, a.age) #sakura 18
del a #sakura 已被销毁 注:若不写该句,程序会自动销毁该对象来回收内存空间
print(a.name) #报错,a已被销毁,无法调用