CDA LEVELII考试中的学习经历记录–部分内容
目录链接:
https://blog.csdn.net/weixin_41744624/article/details/101125379
更新中~~
————————————————————————————————————
三、Python 类
7.python 类
类
是一个独立存放变量(属性/方法)的空间,使用运算符’ . '来调用类的属性和方法
class Person: #定义一个名字为Person的类。
pass
esp = Person()#实例化一个类。esp是Person类的一个实例名
类与实例之间的关系
类是一类事务的抽象,不是真是存在的,他描绘了事务的共性。如:人,桌子,动物等
实例是某事务的个体,是具体到某一个事务的表现,是真实存在的。
实例也是一个独立存放变量的空间。每一个实例都是独立的变量空间,不同实例之间的变量空间是互相不可见的
class Person: #定义一个Peson的类
pass
tom = person() #实例化Person类,tom是Person类的一个实例,是一个真实存在实例,特指tom本人。
Jack= person() #实例化Person类,jack是Person类的一个实例,是一个真实存在实例,特指jack本人。
tom.name = 'python' #后来封装在类中的属性
jack.age = 18 #后来封装在类中的属性
print(tom.name) #正常调用
print(jack.age) #正常调用
print(tom.age) #报错,在类里面找不到属性,实例中也找不到。
print(jack.name) #报错,在类里面找不到属性,实例中也找不到。
print(Person.sex) #报错,在类里面找不到属性,不会去实例中找。
私有属性
在python中有两种私有属性,分别是,在属性前面加一个 _ 和两个 _(下划线)
一个下划线时外部可以访问,两个下划线时外部不可以访问,(相对而言)
class Person:
_age = 19
__sex = '男'
tom = Person()
tom._age #可以调用。
tom.__sex #报错,不可直接访问__sex属性。可以dir(tom),查看tom的方法,里面会有访问__sex的方法。访问方法
python 中,和_的使用更多时一种规范/约定,没有真正限制的目的。定义在类中的私有属性,也可以被子类继承。
方法
方法是封装在类里的特殊函数
class Person:
def eat(self): #在类里定义 eat 方法
print('在吃东西')
tom = Person() #实例化一个类
tom.eat #实例调用eat方法
类的初始化与析构
python有很多实例化的时候就直接添加属性的方法,他们会在特定时间被触发执行,init就是其中之一,他会在实例化后自动调用,以完成实例化的初始化。
class Person:
def __init__(self,name,age):#初始化方法
self.name = name
self.age = age
def eat(self):
print(self.name+'在吃东西')
tom = Person('jack',18) #实例化时候需要传入参数
tom.eat #调用eat方法
__ init__的参数传递过程:
| 实例化产生一个类的实例 |>>>>| python自动调用实例.__ init__(参数) |>>>>| 转换为 类.__
init__(实例,参数) |
析构
前面讨论了实例化的时候的一些操作,那么当实例被销毁了,是否可以做什么。
通常在实例被销毁的时候,会执行怎么样的任务。
__ del__就是一个析构函数,当使用 del 删除对象时,会调用本身析构函数,提醒开发者,对象被销毁了,方便调试,进行一些清理工作。
class Person:
def __init__(self,name):#初始化方法
self.name = name
def __del__(self):#析构方法(销毁方法)
print(self.name,'被销毁了。。。')
tom = Person('jack')
del tom#打印出被销毁
python中,当没有一个变量指向一个对象时,python会自动销毁这个对象,以便收回内存空间。
del 关键字,可以删除一个变量的指向