文章目录

  • 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.teat()  #调用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.teat()  #调用test方法del cl #销毁实例对象
#此时若再次调用实例方法会报错
cl.teat()

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

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

PYTHON 类定义,属性,初始化相关推荐

  1. 浅谈Python类的属性和方法

    浅谈Python类的属性和方法 参考文献 在python中,有私有属性和公有属性,方法我们也一样,他们之间有何区别? 还有类属性和实例属性又是怎么回事? 静态方法和类方法又有什么区别? 我们在工作过程 ...

  2. python 类 公有属性、私有属性、公有方法、私有方法

    python 类 公有属性.私有属性.公有方法.私有方法 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Int ...

  3. python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题

    直接看代码: classPerson:def __init__(self): self.name= "jack" classStudent(Person):def __init__ ...

  4. Python——类的属性与实例化

    类的属性与实例化 属性就是对类和对象特征的描述,外部以属性来区分不同的类,类具有数据属性和方法.而由类创建出来的实例-对象,具有它所属的类的数据属性和方法. 例如,书本是一个类,它具有作者.书名.出版 ...

  5. python类定义的讲解_python类定义的讲解

    Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...

  6. python 类-python类定义的讲解

    一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性.如果直接使用类名修改其属性,那么将直接影响到已经实例 ...

  7. python类的属性和对象属性_python 类属性、对象属性-阿里云开发者社区

    类的普通属性: dir(Myclass), 返回一个key列表: Myclass.__dir__,返回一个字典: 1.类的数据属性: 2.类的方法: 类的特殊属性: 1.Myclass.__name_ ...

  8. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

  9. 详解Python类定义中的各种方法

    首先应该明确,在面向对象程序设计中,函数和方法这两个概念是有本质区别的.方法一般指与特定实例绑定的函数,通过对象调用方法时,对象本身将被作为第一个参数传递过去,普通函数并不具备这个特点. >&g ...

最新文章

  1. 网站服务器停止响应,如何解决apache停止响应的问题
  2. 您应该知道的6个物联网术语—Vecloud微云
  3. spark streaming 5: InputDStream
  4. Ruby:Hash 排序
  5. mysql 交集_MySQL 查询结果取交集的实现方法
  6. 2020 操作系统第三次习题
  7. python中if语句and和or用法_python中if语句的使用(比较、逻辑、成员、运算符,语句结构)...
  8. arm汇编解析—tengine winograd_nhwc卷积实现
  9. spring 各个jar包的功能
  10. linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性
  11. Bad version number in .class file问题解决
  12. TensorFlowOnSpark 接口函数用法
  13. webpack最佳入门实践系列(08)
  14. Windows上优质精选的最佳应用程序及工具列表(附下载链接)
  15. SpringBoot体验Mybatis、MybatisPlus、TKMybatis
  16. 威尔特拉斯定理_维尔斯特拉斯函数-魏尔斯特拉斯给出的那个函数是什么此函数处处连续但处处不可导,我只 爱问知识人...
  17. android 蓝牙打印代码,分享一个b4a下安卓操作蓝牙打印机的代码
  18. 解决网页中文字无法选中的问题
  19. 【模拟电路】关于NPN和PNP导通的应用以及条件
  20. 微信读书调整“时长兑书币”规则

热门文章

  1. BeanCopier、BeanUtils 对象属性拷贝
  2. GJM:Unity开发HTC vive 三、远处拖动3D物体 【转载】
  3. IProute2命令详解
  4. php重置按钮,Bootstrap按钮功能之查询按钮和重置按钮
  5. 固态容量和计算机的计算方式,如何选择SSD的容量大小?
  6. 计算机基础知识的判断题,计算机基础知识判断题(12)
  7. over(Partition by...) 详细用法
  8. json 文件加注释
  9. 《皮肤的秘密》耶尔·阿德勒 epub+mobi+azw3
  10. Matlab添加包libsvm svmtrain已被删除, 请改用fitcsvm