python面向对象(二)
初始化方法
- 当使用
类名()
创建对象时,会 自动 执行以下操作:- 为对象在内存中 分配空间 —— 创建对象
- 为对象的属性 设置初始值 —— 初始化方法(
init
)
- 这个 初始化方法 就是
__init__
方法,__init__
是对象的内置方法 __init__
方法是专门用来定义一个类具右那些属性的方法
class Cat():
"""猫类""" def __init__(self):
print("初始化方法") cat = Cat()
# 运行结果
初始化方法 # 代码中并未覅用__init__方法,但是它会自己调用
在初始化方法内部定义属性
- 在
__init__
方法内部使用self.属性名 = 属性的初始值
就可以 定义属性 - 定义属性之后,再使用
Cat
类创建的对象,都会拥有该属性
class Cat():
"""猫类""" def __init__(self):
# print("初始化方法") self.name = "黑猫" def eat(self):
print("%s 吃鱼" % self.name) cat = Cat()
cat.eat()
# 运行结果
黑猫 吃鱼 # 使用Cat()类创建猫对象时,猫对象拥有名字---》黑猫
初始化的同时设置初始值
- 如果在创建对象的同时,就设置对象的属性,可以对
__init__
方法进行 改造- 把希望设置的属性值,定义成
__init__
方法的参数 - 在方法内部使用
self.属性 = 形参
接收外部传递的参数 - 在创建对象时,使用
类名(属性1, 属性2...)
调用
- 把希望设置的属性值,定义成
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) cat = Cat("黑猫")
cat.eat() cat1 = Cat("白猫")
cat1.eat()
# 运行结果
黑猫 吃鱼
白猫 吃鱼
__del__
方法
在
Python
中- 当使用
类名()
创建对象时,为对象 分配完空间后,自动 调用__init__
方法 - 当一个 对象被从内存中销毁 前,会 自动 调用
__del__
方法(比如:在对象销毁前在做一些事情)
- 当使用
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) def __del__(self):
print("%s 吃完了" % self.name) cat = Cat("黑猫")
cat.eat() cat1 = Cat("白猫")
cat1.eat()
# 运行结果
黑猫 吃鱼
白猫 吃鱼
黑猫 吃完了
白猫 吃完了
__str__
方法
- 在
Python
中,使用print
输出 对象变量,默认情况下,会输出这个变量 引用的对象 是 由哪一个类创建的对象,以及 在内存中的地址(十六进制表示) - 如果希望使用
print
输出 对象变量 时,能够打印 自定义的内容,就可以利用__str__
这个内置方法了
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) def __del__(self):
print("%s 吃完了" % self.name) def __str__(self):
return "我是 %s" % self.name cat = Cat("黑猫")
cat.eat()
print(cat)
# 运行结果
黑猫 吃鱼
我是 黑猫
黑猫 吃完了
python面向对象(二)的更多相关文章
- python面向对象(二)——类成员
Python面向对象 类成员 1.字段 普通字段 属于对象 静态字段 属于类 2.方法 普通方法 触发者是对象 括号里至少一个参数 se ...
- python面向对象二
1.1类的静态属性,类方法,类的静态方法 1.1.1静态属性(@property) 在类中: python内置的@property装饰器就是负责把一个方法(函数)变成属性来调用. class Stud ...
- python 面向对象二 类和实例
一.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法, ...
- Python 面向对象(二) 特殊方法
一些Python特殊方法的汇总 __bases__ 类的基类,返回元祖__base__ 类的基类,也叫父类__call__ '类名()',类名加括号调用时执行的语句__class__ 对象或类 ...
- python面向对象(二)
属性查找 类有两种属性:数据属性和函数属性 1. 类的数据属性是所有对象共享的 2. 类的函数属性是绑定给对象用的 class BeijingStudent: school='Beijing' ...
- python 面向对象(二)--访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...
- python 面向对象(二)成员
##################################总结########################### 类的成员: 变量: 实例变量 对象.属性=xxx 类变量 ...
- Python 面向对象二(转载)
来源:www.cnblogs.com/wupeiqi/p/4766801.html 三.类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 1.公有成员, ...
- 四十一、python面向对象二
A.成员: 1.字段:静态字段(每个对象都有同一字段),普通字典(每个对象都有不同的数据) 2.方法:静态方法(无需使用对象的内容),类方法,普通方法(使用对象中的数据) 3.特性:普通特性(将方法伪 ...
- Python自动化开发 - 面向对象(二)
本节内容 1.isinstance(obj,cls)和issubclass(sub,super) 2.反射 3.__setattr__,__delattr__,__getattr__ 一. isins ...
随机推荐
- leetcode-105-从前序与中序遍历构造二叉树
题目描述: 方法一: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.va ...
- Python-进程(1)
目录 操作系统发展史 穿孔卡片 联机批处理系统 统计批处理系统 单道 多道技术 空间上复用 时间上复用 并行与并发 进程 程序与进程 进程调度 进程的三个状态 就绪态 运行态 阻塞态 同步和异步 阻塞 ...
- WCF进阶:扩展bindingElementExtensions支持对称加密传输
前面两篇文章WCF进阶:将编码后的字节流压缩传输和WCF 进阶: 对称加密传输都是实现了自定义编码,那两个例子中托管服务或者客户端调用都采用的代码实现,WCF更友好的方式是在app.config或 ...
- 软件-版本控制器-VisualSVN:VisualSVN
ylbtech-软件-版本控制器-VisualSVN:VisualSVN VisualSVN 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 0. https:/ ...
- iOS的Runtime机制下给类别(category)添加属性、替换原有类的方法执行
一.Runtime的理解 OC是面向对象的语言这是常识,其实就是通过Runtime机制动态创建类和对象,这里只是简单的运用runtime的使用! 二.类别(category)添加属性_使用前记得导入头 ...
- hibernate抓取策略
抓取策略(fetching strategy) 是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的 ...
- JSON高亮格式化页面显示
高亮CSS定义: <style type="text/css"> pre {outline: 1px solid #ccc; padding: 5px; margin: ...
- mybatis和java一些知识记录
<where> <if test="userName != null and userName != ''"> and user_name like con ...
- ASCII对照
标准表 Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字符 0000 0001 01 ...
- agc034
A:题意:你有一个1 * n的网格,有些地方是障碍.你有两个人,分别要从a到b和从c到d,一次只能向右跳1步或者两步.求是否可行. 解:先判断有没有2个连续的障碍,然后判断是否能错车. #includ ...