「」看完这篇文章,你的Python基础就差不多了( 五 )
在程序开发中 , 要设计一个类 , 通常需要满足一下三个要素: 类名 这类事物的名字 , 满足大驼峰命名法 属性 这类事物具有什么样的特征 方法 这类事物具有什么样的行为2. 面向对象基础语法2.1 dir 内置函数和内置方法
在 Python 中 对象几乎是无所不在的 , 我们之前学习的 变量、数据、函数 都是对象 。在 Python 中可以使用以下两个方法验证:
在 标识符 / 数据 后输入一个点 . , 然后按下 TAB 键 , iPython 会提示该对象能够调用的方法列表 。
使用内置函数 dir 传入 标识符 / 数据 , 可以查看对象内的 所有属性及方法 。
提示__方法名__格式的方法是 Python 提供的 内置方法 / 属性 。
序号 方法名 类型 作用 01 __new__ 方法 创建对象时 , 会被 自动 调用 02 __init__ 方法 对象被初始化时 , 会被 自动 调用 03 __del__ 方法 对象被从内存中销毁前 , 会被 自动 调用 04 __str__ 方法 返回对象的描述信息 , print 函数输出使用
提示 利用好 dir() 函数 , 在学习时很多内容就不需要死记硬背了 。2.2 定义简单的类(只包含方法)面向对象是更大的封装 , 在 一个类中封装多个方法 , 这样通过这个类创建出来的对象 , 就可以直接调用这些方法了!
定义一个只包含方法的类:class 类名:def 方法1(self, 参数列表):passdef 方法2(self, 参数列表):pass
方法 的定义格式和之前学习过的函数几乎一样 , 区别在于第一个参数必须是 self 。注意:类名 的 命名规则 要符合 大驼峰命名法 。当一个类定义完成之后 , 要使用这个类来创建对象 , 语法格式如下:对象变量 = 类名()在面向对象开发中 , 引用的概念是同样适用的!
使用 print输出 对象变量 , 默认情况下 , 是能够输出这个变量 引用的对象 是 由哪一个类创建的对象 , 以及 在内存中的地址(十六进制表示) 。提示:在计算机中 , 通常使用 十六进制 表示 内存地址 。
如果在开发中 , 希望使用 print输出 对象变量 时 , 能够打印 自定义的内容 , 就可以利用 __str__这个内置方法了:class Cat:def __init__(self, new_name):self.name = new_nameprint("%s 来了" % self.name)def __del__(self):print("%s 去了" % self.name)def __str__(self):return "我是小猫:%s" % self.name tom = Cat("Tom") print(tom)注意:__str__方法必须返回一个字符串 。2.3 方法中的 self 参数
在 Python 中 , 要 给对象设置属性 , 非常的容易 , 只需要在 类的外部的代码 中直接通过 对象.设置一个属性即可 , 但是不推荐使用:class Cat:"""这是一个猫类"""def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫在喝水") tom = Cat() # 给对象设置属性 tom.name = "Tom"
因为:对象属性的封装应该封装在类的内部由哪一个对象调用的方法 , 方法内的 self就是哪一个对象的引用
在类封装的方法内部 , self 就表示当前调用方法的对象自己 , 在方法内部:
可以通过 self.访问对象的属性 , 也可以通过 self.调用对象的其他方法 。
调用方法时 , 程序员不需要传递 self 参数 。
在 类的外部 , 通过变量名.访问对象的 属性和方法
在 类封装的方法中 , 通过 self.访问对象的 属性和方法2.4 初始化方法:__init__当使用 类名() 创建对象时 , 会 自动 执行以下操作: 为对象在内存中分配空间 —— 创建对象 为对象的属性设置初始值 —— 初始化方法(__init__)__init__ 方法是 专门 用来定义一个类具有哪些属性的方法!
在 __init__ 方法内部使用 self.属性名 = 属性的初始值 就可以定义属性 , 定义属性之后 , 再使用 类创建的对象 , 都会拥有该属性 。
【「」看完这篇文章,你的Python基础就差不多了】在开发中 , 如果希望在 创建对象的同时 , 就设置对象的属性 , 可以对 __init__ 方法进行 改造: 把希望设置的属性值 , 定义成 __init__方法的参数 在方法内部使用 self.属性 = 形参 接收外部传递的参数 在创建对象时 , 使用 类名(属性1, 属性2...) 调用class Cat:def __init__(self, name):print("初始化方法 %s" % name)self.name = name...tom = Cat("Tom") ... lazy_cat = Cat("大懒猫") ...2.5 私有属性和私有方法
推荐阅读
- 「」哪家18W PD快充方案最受欢迎?看完这个报告秒懂
- 「」高盛预计 iPhone 12 将延迟到 11 月初推出
- 「年度」年度旗舰∶Oneplus 8 Pro
- 「屏幕」华为正研究两款透过滑屏增大屏幕的手机
- 『』新家装不是“避风港”,而是“出海口”
- 【】人工智能突破三维矢量全息新技术
- ##冒用绍兴公司名头 这个虚假理财平台骗了不少人
- 「地球」距离地球630光年的地方,下起了“铁雨”
- ##发力智慧商业 云从科技与红星云计算达成战略合作
- 「」什么是基础架构即代码和平台即代码?看完就清楚了