类:
语法: 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函数的更多相关文章

  1. Python记录14:面向对象编程 类和对象

    '''现在主流的编程思想有两种,一种是面向对象,一种是面向过程面向过程编程 核心是过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.最后干什么... 基于该思想编写程序就好比再设计一条流水线, ...

  2. 13_Python的面向对象编程-类class,对象object,实例instance

    1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         ...

  3. python -- 面向对象编程(类、对象)

    一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...

  4. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  5. Day 22 面向对象编程

    面向对象基础 面向对象编程(抽象) 对象:特征和技能的结合体 面向对象编程:一个个对象进行交互 优点:扩展性非常强 缺点:逻辑非常复杂 类与对象 类(类别):一系列具有相同特征和技能的对象 现实世界中 ...

  6. oop面向对象【类与对象、封装、构造方法】

    今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...

  7. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  8. Python 面向对象编程——类定义与对象

    <类定义与对象声明> 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对 ...

  9. Python - 面向对象编程 - 什么是对象和类

    面向对象编程 Object Oriented Programming,简称 OOP,是一种程序设计思想 OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法 Python里面有一句话: ...

随机推荐

  1. 第三章 列表(e)插入排序

  2. DRF的视图和路由

    DRF的视图 APIView Django中写CBV的时候继承的是View,rest_framework继承的是APIView, urlpatterns = [ url(r'^book$', Book ...

  3. ES3之closure ( 闭包 )

    词法作用域中使用的域,是变量在代码中声明的位置所决定的.嵌套的函数可以访问在其外部声明的变量. 闭包是函数和声明该函数的词法环境的组合. 1 创建单个闭包 JavaScript中的函数会形成闭包. 闭 ...

  4. QT各模块

    基本模块: QT core QT gui QT widgets QT multimedia QT webkit 浏览器引擎 QT network QT sql QT test 单元测试 QT webv ...

  5. polymorphism多态

    [概念] 方法名相同,具体操作根据类不同. eg 有open()方法的ebook, kindle 都会被打开 eg 动物叫声不同 inheritance:只有superclass subclass都有 ...

  6. swift 数组 的一些快速方法

    1. filter (过滤器):返回符合条件的一个数组 let arr = [1,5,6,7,10,0] //写法1 let arr1 = arr.filter { (item) -> Bool ...

  7. vue 内引入jquery

    1.  npm i jquery -- save 2. import $ from 'jquery' window.$ = $ window.jQuery = $ export default $ 这 ...

  8. idea中快捷键设置为eclipse中快捷键

    打开file-settings,然后搜索key,在keymap中选择eclipse (1) (2)

  9. mysql定位慢查询

    mysql定位慢查询 //显示数据库的状态 show status; //显示执行了多少次插入 show status like 'com_insert'; //显示执行了多少次更新 show sta ...

  10. table-layout 显示规则以及其他一些零碎的东西

    首先对中文显示的不够好 对中文失效  auto是表格的宽和高都会随着内容增多而改变  而fixed只会增加表格的高度   宽度不会发生改变  table中的td的宽,高会根据内容的多少而变化: fix ...