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里面有一句话: ...
随机推荐
- ACM-ICPC 2018 南京赛区网络预赛 L.Magical Girl Haze(分层最短路)
There are N cities in the country, and M directional roads from u to v(1≤u,v≤n). Every road has a di ...
- TZOJ 3709:Number Maze(广搜记录前驱)
描述 You are playing one game called "Number Maze". The map of an example is shown in the fo ...
- day 27 Python中进程的操作
进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...
- java_5.1 for循环
1.求1-100的和 public static void main(String[] args) { int sum = 0; for (int i = 0; i <= 100 ; i++) ...
- java 向上转型和向下转型
学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么 ...
- YII2 在使用控制器调试微信接口时报错 Unable to verify your data submission
出现这个原因,是因为提交数据时,被YII2的CSRF验证给拦截了. 只需要在当前控制器设置一个属性,关闭该验证就可以了. public $enableCsrfValidation = false;
- Ubuntu安装时没注册root用户密码,怎么登录root
一.其实我个人认为这没有多大必要,因为当你需要 root 的权限时,使用 sudo 便可以了.如果你实在需要在 Ubuntu 中启用 root 帐号的话,那么不妨执行下面的操作: 1.重新设置 roo ...
- Android开发之自定义Dialog简单实现
本文着重研究了自定义对话框,通过一下步骤即可清晰的理解原理,通过更改界面设置和style类型,可以应用在各种各样适合自己的App中. 首先来看一下效果图: 首先是activity的界面 点击了上述图片 ...
- [中英对照]Introduction to DPDK: Architecture and Principles | DPDK概论: 体系结构与实现原理
[中英对照]Introduction to DPDK: Architecture and Principles | DPDK概论: 体系结构与实现原理 Introduction to DPDK: ...
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 : ...