Python--8、类的定义、属性、初始化和析构

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('你被击败了,任务失败')    #析构方法(销毁的方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值