面向对象编程opp(黑马学习笔记)--基础部分
程序员文章站
2024-03-23 18:24:58
...
一、面向对象的一般过程
- 首先确定职责,要做的事情
- 职责不同,对象不同,在对象内部封装不同的方法
- 最后完成代码,让不同的对象调用不同的方法
二、相关的概念
类:
是一群具有相同特征或行为的事物的统称,是一种抽象的定义
注释:
- 特征:就是指的是类中的属性
- 行为:就是类中的方法
- 通俗地讲就是类就是一张图纸
例子:人类就是一个类,但是这个类他无法具体到某一个人的身上或者无法用人类(这个名词)来替代某个人,是抽象的定义;
如果说人类的共同特征就是五官、四肢这些就是所谓的类中相同特征(属性);
而行为就是人类这个类可以进行高级的学习,进行高级的学习就是类中的行为
对象:
由类创建出来,具体到了某一个对象身上;
例如:人类是一个类,小明就是人类中的一个人,小明就是对象。
三、设计类的三要素和名词提炼法
[1]类的三要素:
- 类名:采用大驼峰命名法
- 属性:具有什么的特征
- 方法:具有什么的行为
[2]名词提炼法:
名词提炼法就是分析整个业务流程,出现的名词,通常就是找到的类
[3]如何在业务流程里找到属性和方法
1.属性的找法
通常我们的属性就是流程里的对象的特征
2.方法
通常我们的方法就是对象所具有的某些行为
四、基本语法
1.创建类
class 类名(大驼峰):
def 方法名1(self,参数列表):
pass
2.创建对象
变量名 = 类名(参数列表)
3.例子
class Cat:
#定义吃的行为
def eat(self):
print("小猫爱吃鱼")
#定义喝的行为
def drink(self):
print("小猫爱喝水")
tom = Cat() #创建一个tom的猫对象
tom.eat() #调用tom吃的行为
tom.drink() #调用tom喝的行为
print(id(tom)) #利用id函数得到tom这个对象的地址
print(tom) #输出对象所在的地址
4.截图
五、方法中的self参数
[1]增加对象属性
- 在 Python 中,要 给对象设置属性,非常的容易,但是不推荐使用
- 原因:对 属性的封装应该封装在类的内部
- 只需要在 类的外部的代码 中直接通过 . 设置一个属性即可
例如:
class Human():
def print_info(self,age,name):
self.name = name
self.age = age
print("name:" + self.name + '\n' + "age:" + self.age)
xiaoming = Human() #创建xiaoming这个Human对象
xiaoming.print_info("小明","18") #传递参数
xiaoming.job = "student" #给xiaoming这个对象增加一个job的属性, 但是一般情况下不这样增加,都在类的内部进行增加
print(xiaoming.job)
[2]self参数的作用
1.作用:
哪一个对象调用的方法,方法内的self就是哪一个对象的引用
通俗地讲,就是对象调用类中的那个方法时,那么方法中的self会自动的变成对象
2.注意:
- 在调用方法时,程序员不需要传递self参数
- 在方法内部:
- 可以通过self. 访问到对象的属性
- 也可以通过self. 调用其他的对象方法
3.属性和方法的访问:
在类的内部,通过 变量名.访问对象的属性和方法
在类封装的方法中,通过self.访问对象的属性和方法
六、初始化方法(init)
[1]当使用类名创建对象的时候,我们需要知道以下两点:
1.python会自动为对象创建分配空间,借助的方法是__new__
2.python会自动为对象设置初始值,借助的方法是__init__
[2]初始化内部定义属性
例子:
class Human():
#利用init方法增加self.name,self.age这两个属性
def __init__(self,name,age):
self.name = name
self.age = age
def print_info(self):
print("name:" + self.name + '\n' + "age:" + self.age)
xiaoming = Human("小明","18") #创建类对象的时候需要传递name,age对应的实参
xiaoming.print_info()
注意:
- 如果我们利用init方法进行了属性的设置,那么我们在创建类对象的时候必须要把对应的实参进行传递
七、常见的内置方法和属性
[1]定义:
- 内置方法/属性:
__方法名/属性名__
前后各有两个下划线的是类中的内置方法/属性 - 内置方法/属性的特点: 在创建对象的时候,会自动的调用这些类中的内置方法/属性
[2]__del__
方法(知道)
1.注意
在python中在一个对象从内存中销毁前,会调用__del__
方法,释放所占内存的空间
2. 应用范围
想要对象销毁前做一些事情就需要__del__
方法
3.例子
class Human():
def __init__(self, name, age):
self.name = name
self.age = age
def __del__(self): #修改__del__方法
print("这是我在内存中被销毁前的最后一句话")
def print_info(self):
print("name:" + self.name + '\n' + "age:" + self.age)
def going_now(self, logo):
if logo == True:
print("那我们现在就出发吧!!")
xiaoming = Human("小明","18")
xiaoming.print_info()
xiaoming.going_now(True)
4.截图
[3]__str__
方法
1.注释
在python中我们利用print函数输出对象变量时,默认情况下输出的是对象变量所在的地址,以及有哪个类创建。
例如:
class Human():
def __init__(self, name, age):
self.name = name
self.age = age
def __del__(self): #修改__del__方法
print("这是我在内存中被销毁前的最后一句话")
def print_info(self):
print("name:" + self.name + '\n' + "age:" + self.age)
def going_now(self, logo):
if logo == True:
print("那我们现在就出发吧!!")
xiaoming = Human("小明","18")
print(xiaoming) #输出对象变量所在的地址以及由哪个类创建
2.应用场景
如果在开发中,希望使用print函数输出对象变量时,能够打印自定义内容就可以利用__str__
3.语法:
def __str__(self):
return "字符串内容"
4.例子:
class Human():
def __init__(self, name, age):
self.name = name
self.age = age
def __del__(self): #修改__del__方法
print("这是我在内存中被销毁前的最后一句话")
def __str__(self): #修改__str__方法
return "这是str函数在起作用"
def print_info(self):
print("name:" + self.name + '\n' + "age:" + self.age)
def going_now(self, logo):
if logo == True:
print("那我们现在就出发吧!!")
xiaoming = Human("小明","18")
print(xiaoming) #输出对象变量所在的地址以及由哪个类创建
5.截图
上一篇: switch case判断成绩等级
推荐阅读
-
面向对象编程opp(黑马学习笔记)--基础部分
-
我的Python学习笔记_Day15 面向对象编程1
-
Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)
-
Java的面向对象编程基本概念学习笔记整理
-
Java的面向对象编程基本概念学习笔记整理
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第20章:接口的定义与使用:课时91:代理设计模式
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时29:数组与方法
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时26:数组引用传递分析
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第1章:类与对象:课时5:对象内存分析
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第7章:数组的定义与使用:课时34:对象数组