Python10/22--面向对象编程/类与对象/init函数
类:
语法: class关键字 类名
# 类名规范 大写开头 驼峰命名法
class SHOldboyStudent:
# 描述该类对象的特征
school = "上海Oldboy"
name = "矮根"
age = 68
gender = "unknown" # 在定义阶段
# 只要包含该类的py被执行 就会做两件事情
# 1.就会创建类的名称空间
# 2.执行代码 将产生的名称放入名称空间
print("========================") # 描述该类对象的行为 通过函数
def say_hi(abc):
print(abc)
print("hello oldBoy") #使用类中的属性
print(SHOldboyStudent.__dict__)
print(SHOldboyStudent.__dict__["name"])
print(SHOldboyStudent.name) # 使用类中的函数
print(SHOldboyStudent.__dict__["say_hi"])
print(SHOldboyStudent.say_hi)
# 使用类直接调用类中函数时 与普通函数没有任何区别 位self仅仅是一个置参数
SHOldboyStudent.say_hi(10) 对象的使用
class OldboyStudent:
# 如果每个对象的这个属性都相同 才应该定义到类中 比如所有人的学校都是上海Oldboy
school = "上海Oldboy" # 创建对象
# 语法: 在类名后加括号 与调用函数写法相同
# stu = OldboyStudent()
# # 访问对象的属性
# print(stu.school)
# print(OldboyStudent.school) # 修改属性的值
# stu.school = "北京Oldboy"
# print(stu.school)
#
# # 增加属性
# stu.room_num = "1008"
# print(stu.room_num)
#
# # 删除属性
# del stu.room_num
# print(stu.room_num) # 对象 与类的名称空间是独立的
# stu.school = "深圳oldboy" # 为对象的属性赋予新的值
# print(OldboyStudent.school) # 类中的属性不会变化
# stu.room_num = "1008" # 为对象增加属性
# # print(OldboyStudent.room_num) #类中也不会出现新的属性
# print(stu.__dict__)
# print(OldboyStudent.__dict__) # 如果对象的属性是相同的 就放到类中 作为一个公共的数据
# stu.school #大家都是上海小区 # stu2 = OldboyStudent()
# print(stu2.__dict__) init函数:
# __init__称之为初始化函数 它会在创建对象的时候自动执行
# 创建对象时
# 1.创建一个空对象
# 2.执行__init__函数 并且自动传入了这个对象 # 该函数的作用,就是为对象的属性赋初始值
#1. 使用场景 需要为每个对象定制不同的属性值
#2.__init__在创建对象后自动执行
#3.第一个self参数 指的是这个对象本身 不需要手动传值
1.所有程序都因该使用面向对象来设计吗?为什么?
不是所有程序都应该使用面向对象,应该面向对象会提高程序的复杂度,对于一些扩展要求不高的程序,则不一定非要使用面向对象
2.什么是对象 什么是类
对象指的是现实生活中实实在在存在的物体,并且其具备独特的特征与行为 反过来可以理解为 特征与行为的结合体
类是一些具备相同特征和技能的事物的抽象概念,不实际存在
3.在面向过程编程中我们思考解决方案时,是分析完成任务时需要哪些步骤,按照什么样的顺序来编写,而在面向对象编程中我们从操作者转变为指挥者 首先思考的是什么?
首先思考,完成任务需要哪些对象来参与
其次分析这些对象具备哪些特征和行为
最后按照分析结果编写class
4.一个类中通常包含变量和函数,它们分别用于描述什么?
变量用于描述该类对象共同的属性
函数用于描述该类对象具备的行为(技能)
5.类在定义阶段发生了什么
立即执行类中的代码 将产生的名字存放在类的名称空间中
6.创建对象时发生了什么
1.创建空对象
2.自动执行init函数 将这个对象以及额外的参数组装后传给该函数
7.什么是绑定方法,和普通函数有什么区别
绑定方法其实就是对象和函数得绑定在一起
在调用绑定方法时,会自动传入对象本身
最终执行的还是类中定义的函数
绑定方法仅仅是帮我们自动传入了对象
区别:
普通函数在调用时,根据函数声明有几个参数就一定要传几个参数
而绑定函数在调用时,会自动传入对象本身,所以通常我们手写的参数个数比声明的少一个
Python10/22--面向对象编程/类与对象/init函数的更多相关文章
- Python记录14:面向对象编程 类和对象
'''现在主流的编程思想有两种,一种是面向对象,一种是面向过程面向过程编程 核心是过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.最后干什么... 基于该思想编写程序就好比再设计一条流水线, ...
- 13_Python的面向对象编程-类class,对象object,实例instance
1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组 2.对象是由类实例化出来的一个具体的对象 属性: 对象拥有的名词,用变量表示 ...
- python -- 面向对象编程(类、对象)
一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...
- JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)
1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...
- Day 22 面向对象编程
面向对象基础 面向对象编程(抽象) 对象:特征和技能的结合体 面向对象编程:一个个对象进行交互 优点:扩展性非常强 缺点:逻辑非常复杂 类与对象 类(类别):一系列具有相同特征和技能的对象 现实世界中 ...
- oop面向对象【类与对象、封装、构造方法】
今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- Python 面向对象编程——类定义与对象
<类定义与对象声明> 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对 ...
- Python - 面向对象编程 - 什么是对象和类
面向对象编程 Object Oriented Programming,简称 OOP,是一种程序设计思想 OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法 Python里面有一句话: ...
随机推荐
- Android 中Application向Activity 传递数值
比如极光注册时获取用户的唯一标示ID需要在登录时进行传递,实现消息的指定用户推送功能 public String id; public String getId() { return id; } pu ...
- HDU-1257.最少拦截系统(基础DP)
本题大意:给出n和n个整数,让你求出其中不上升子序列的个数. 本题思路:用dp[ i ]保存第i个防御系统攻击的最低的导弹,遍历数组,遇到更低的导弹则更新最小值,否则新加一个系统用来防御,并且更新最小 ...
- Aladdin and the Flying Carpet
Aladdin and the Flying Carpet https://cn.vjudge.net/contest/288520#problem/C It's said that Aladdin ...
- crm作业知识点集合[三]
知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...
- git中 vi/vim的命令
一.vi & vim 有两种工作模式: 1.命令模式:接受.执行 vi操作命令的模式,打开文件后的默认模式: 2.编辑模式:对打开的文件内容进行 增.删.改 操作的模式: 在编辑模式下按下ES ...
- 类似No module named 'bs4'等错误的解决方法
最近开始接触爬虫,写了如下源代码: from bs4 import BeautifulSoup import requests url='https://www.tripadvisor.cn/Attr ...
- VS2015中C#版本6.0的新特性
[z]http://www.cnblogs.com/xszjk/articles/6417173.html [z]https://www.cnblogs.com/qixu/p/6047229.html ...
- <history> 特别报道:Google离职富翁们都在干什么?
特别报道:Google离职富翁们都在干什么? 时间:2008-01-23 10:16:47作者:CNET科技资讯网 本文关键词:Google CNET科技资讯网1月23日国际报道 假如你拥有1千万或1 ...
- 【Linux】关于路由跟踪指令traceroute
稍有计算机常识的人都知道ping命令,是用来检查自己的主机是否与目标地址接通,自己的主机与目标地址的通讯包通讯速率,所谓的通讯包也就是那些什么TCP/IP,UDP包,这里说得通俗一点,比如,就拿这 ...
- (转)jquery.cookie中的操作
jquery.cookie中的操作: jquery.cookie.js是一个基于jquery的插件,点击下载! 创建一个会话cookie: $.cookie(‘cookieName’,'cooki ...