PYTHON 类定义,属性,初始化

PYTHON 类定义,属性,初始化

为了代码的编写方便简洁,引入了类的定义;
一般,使用 class 语句来创建一个新类,class之后为类的名称(通常首字母大写)并以冒号结尾,例如:

类中可以定义所使用的方法,类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self;

类定义

关键词 class

#类定义 class 类名:
class My_class:
    pass
#实例
cl =  My_class()
#cl就是My_class类的一个实例

类名,一帮情况下首字母需要大写。

类是一个存档独立变量(属性、方法)的空间。

采用运算符点"."调用类的属性或者方法

#定义一个My_class的类
class My_class:
    var = "id"    #var就是类的属性
    
    def test(self):   #test函数就是类的方法,参数self称为实例方法
        print('类方法') 
        
#实例化类并调用类的属性和方法
cl =  My_class()
print(cl.var)    #调用类属性
cl.test()        #调用类方法

类与实例之间的关系:

类:是一类事物的抽象,不是真是存在的。
描绘了该类事物的共性,
例如:“人”、“动物”、“家具”

实例:

某类事物的具体个体,是该类事物的具体表现,它是真实存在的。
例如:‘张三’是具体的某个“人”,
‘ 李四’也是具体的某个“人”。

张三和李四就相当于人这个类的实例。

实例化对象既能访问实例属性,也能访问类属性,而类没有实例化则只能访问类属性。

类的私有属性

class My_class:
    var = "id"    #var就是类的属性
    _name="小明"   #一个"_"下划线,私有
    __age=18      #二个"_"下划线,私有

一个"_"下划线,是私有属性,类外可以调用,约定成俗的私有。

二个"_"下划线,强制私有属性,类外无法调用。

类方法

“方法”就是封装在类里的一种特殊的函数,

#定义一个My_class的类
class My_class:   
    def test(self):   #test函数就是类的方法,参数self称为实例方法
        print('类方法') 
        
#通过类实例化调用类方法
cl = My_class()
cl.test()

函数test加一个参数self表示类的实例方法,表示的是“实例”的行为,如果不加self,那么实例调用类方法会出错。

调用类的实例方法,和函数的传参一样,只是会先传一个自身的实例self。

self相当于实例本身,带self的方法成为实例方法,这样实例可以调用,不戴self的方法只有类本身才能调用。

类的初始化和析构

在Python中有很多以双下划线开头且以双下划线结尾的固定方法。
他们会在特定的时机被触发执行。

初始化

init 就是其中之一,它会在实例化之后自动被调用。以完成实例的初始化。

class My_class: 
    def __init__(self,name):   #初始化方法
        self.name = name     #初始化类的属性
        
    def test(self):   #test函数就是类的方法,参数self称为实例方法
        print('实例名字是:{}'.format(self.name)) #使用类的属性
        
#实例化,因为init方法有一个参数name,所以实例化的时候需要传递一个参数
#因为实例化的时候会自动调用__init__方法。
cl=My_class('张三')
cl.test()  #调用test方法

init方法参数的传递过程

  • 实例化:产生一个类的实例
  • Python自动调用:实例.init(参数)
  • 转换为:类.init(实例,参数)
#第一步
cl=My_class('张三') #创建一个实例
#第二步
cl.__init__('张三')
#第三步
My_class.__init__('张三')

析构

类在实例化的时候,可以做一些初始化操作,那么当实例被销毁的时候,同样可以调用销毁方法来销毁实例。

__del__就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数。
提示开发者,对象被销毁了,方便调试。
进行以写必要的清理工作。

class My_class: 
    def __init__(self,name): #初始化方法
        self.name = name     #初始化类的属性
        
    def test(self):   #test函数就是类的方法,参数self称为实例方法
        print('实例名字是:{}'.format(self.name)) #使用类的属性
        
    def __del__(self):       #析构方法(销毁方法)
        print('对象被销毁:{}'.format(self.name)) 

#实例后调用del销毁对象
cl=My_class('张三')
cl.test()  #调用test方法

del cl #销毁实例对象
#此时若再次调用实例方法会报错
cl.teat() 

当没有一个变量指向某个对象的时候,Python会自动销毁这个对象,以便回收内存空间。

del 关键字,可以删除一个变量的指向。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值