Python–8、类的定义、属性、初始化和析构
类定义
1、class 类名:
执行的操作
2、实例名 = 类名 ()
3、运算符"." 调用类的属性或方法。查找的时候,先在变量中查找,如果变量中找不到值再去类中查找。
4、类是某一类事物的抽象,不是真实存在的;实例是某类事物的具体个体,是该类事物的具体表现,是真实存在在。每个实例都有自己特立的访问空间。实例的特征就是属性。
5、两种私有属性:一个下划线(_)可以直接访问,两个下划线(__)不可以直接访问。定义在类中的私有属性也可以被子类继承。
class Car:
pass
a=Car()
b=Car()
class Book:
name='哈利波特'
n1 = Book() # n1是 Book的实例化
print(n1.name)
n1.name = '围城' #更改了属性值
print(n1.name) #现在变量中查找值
class Person:
name = 'rts' #类属性 封装起来
_age = 20 #私有属性 _在实例化不可访问的属性,强制访问也可以访问
__money = 500 #私有属性 不可访问
n1 = Person()
print(n1.name)
print(n1._age)
print(n1.__money) #访问不了
类方法
1、类里面def定义的是类方法,self 代表的是实例的自身,这是实例独有的方法。
2、通常默认将会传入的参数命名为 self,用来表示调用这个方法的实例对象本身。
3、方法总是在类中定义的,但是却叫做“实例方法”,因为它代表该类所有实例所共有的行为。
4、调用类和实例方法的时候加括号,调用类的属性时不加括号。
class Person:
name = '' #类属性
blood = 99
level = 0
def heal(self): #类里面def定义的是类方法
#self 代表的是实例的自身,这是实例独有的方法
print("%s使用饼干加血"%self.name)
print("增加血量")
def Level_Up(self):
print("恭喜玩家%s 升级啦!!!"%self.name)
n2 = Person()
n2.name = "vn"
print(n2.name)
print(n2.blood)
n2.heal() #调用类里面的heal 方法
n3 = Person()
n3.name = "女警"
print(n3.name)
print(n3.blood)
n3.heal()
n3.Level_Up()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWq1jbi6-1578213356104)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200101152354821.png)]
初始化和析构
初始化
1、在Python中会有很多双划线开头加双划线结尾的固定方法,他们会在特定的时机被处罚执行。
2、__ init __ 就是其一,会在实例化之后自动被调用。以完成实例的初始化。
3、__ init __ 的参数传递,先产生一个类的实例,之后Python自动调用这个实例 __ init __ (参数),转化为类 __ init __(实例参数)
class Person:
def __init__(self,name): #定义初始化方法
print("---游戏初始化中---")
print("---请稍后---")
self.name = name
self.level = 1
self.blood = 100
print("---初始化完成---")
def up(self):
print("恭喜你,打败了敌方!")
print("获得奖励")
print("等级加1")
self.level += 1
self.blood +=100
a1 = Person('vn')
print ('等级:%s'%a1.level)
print ('血量:%s'%a1.blood)
print("你遇到了野怪:史莱姆,是否进行攻击(请输入是或者否):")
b = input()
if b == '是':
a1.up()
else:
print('你成功绕过了敌方区域;')
print ('你当前的属性为:')
print ('等级:%s'%a1.level)
print ('血量:%s'%a1.blood)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Hug9be7-1578213356105)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200101160238844.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohdYhyqg-1578213356105)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200101163128357.png)]
析构
1、__ del __”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数(即使用del 时调用)。提示开发者,对象被销毁了,方便调试。进行以写必要的清理工作。
2、定义函数、变量、对象:构造
删除函数、变量、对象:析构
def __del__(self):
print('你被击败了,任务失败') #析构方法(销毁的方法)
象被销毁了,方便调试。进行以写必要的清理工作。
2、定义函数、变量、对象:构造
删除函数、变量、对象:析构
def __del__(self):
print('你被击败了,任务失败') #析构方法(销毁的方法)