欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象编程opp(黑马学习笔记)--基础部分

程序员文章站 2024-03-23 18:24:58
...

一、面向对象的一般过程

  1. 首先确定职责,要做的事情
  2. 职责不同,对象不同,在对象内部封装不同的方法
  3. 最后完成代码,让不同的对象调用不同的方法

二、相关的概念

类:

是一群具有相同特征行为的事物的统称,是一种抽象的定义

注释:

  1. 特征:就是指的是类中的属性
  2. 行为:就是类中的方法
  3. 通俗地讲就是类就是一张图纸

例子:人类就是一个类,但是这个类他无法具体到某一个人的身上或者无法用人类(这个名词)来替代某个人,是抽象的定义;
如果说人类的共同特征就是五官、四肢这些就是所谓的类中相同特征(属性);
而行为就是人类这个类可以进行高级的学习,进行高级的学习就是类中的行为

对象:

由类创建出来,具体到了某一个对象身上;
例如:人类是一个类,小明就是人类中的一个人,小明就是对象。

三、设计类的三要素和名词提炼法

[1]类的三要素:

  1. 类名:采用大驼峰命名法
  2. 属性:具有什么的特征
  3. 方法:具有什么的行为

[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.截图

面向对象编程opp(黑马学习笔记)--基础部分

五、方法中的self参数

[1]增加对象属性

  1. 在 Python 中,要 给对象设置属性,非常的容易,但是不推荐使用
  2. 原因:对 属性的封装应该封装在类的内部
  3. 只需要在 类的外部的代码 中直接通过 . 设置一个属性即可
    例如:
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.注意:

  1. 在调用方法时,程序员不需要传递self参数
  2. 在方法内部:
    - 可以通过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()

注意:

  1. 如果我们利用init方法进行了属性的设置,那么我们在创建类对象的时候必须要把对应的实参进行传递

七、常见的内置方法和属性

[1]定义:

  1. 内置方法/属性:__方法名/属性名__ 前后各有两个下划线的是类中的内置方法/属性
  2. 内置方法/属性的特点: 在创建对象的时候,会自动的调用这些类中的内置方法/属性

[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.截图

面向对象编程opp(黑马学习笔记)--基础部分

[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) #输出对象变量所在的地址以及由哪个类创建

面向对象编程opp(黑马学习笔记)--基础部分

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.截图

面向对象编程opp(黑马学习笔记)--基础部分