python学习进阶之面向对象(二)
文章目录
- 1.面向对象编程介绍
- 2.面向对象基本语法
- 3.面向对象的三大特征
- 4.面向对象其他语法
1.面向对象编程介绍
1.1 基本概念
- 概念:面向对象编程(Object-Oriented Programming, OOP)是一种流行的编程范式,它以"对象"为核心组织代码和数据
- 在面向对象的世界里:
万事万物皆对象
1.2 面相过程和面向对象
- 面向过程:
- 根据需求,将某些独立功能封装成一个又 一个函数
- 最后完成的代码,就是顺序地调用不同的 函数
- 面相对象:
- 相比较函数,面向对象是更大的封装,根 据职责在一个对象中封装多个方法
- 根据职责确定不同的对象,在对象内部封 装不同的方法
1.3 类和对象的概念
类
:是对具有相同特征或者行为的事物的一个统称, 是抽象的,不能直接使用- 主要内容:
- 特征(静态) -> 属性
- 行为(动态) -> 方法
- 类的设计
- 注意:
大驼峰命名法
: 所有单词第一个字 母大写, 单词之间没有下划线类名的提取
:使用名词提炼法分析整个业务流程, 得出的名词, 通常就是类名- 对于需求中没有提到的
属性
和方法
, 在设计类的时候不要添加进来!
- 想要设计一个类, 通常需要满足以下三个要素
类名
: 同类事物的名字, 命名要满足大驼峰命名法属性
: 同类事物具备的特征方法
: 同类事物具备的行为
- 注意:
- 主要内容:
对象
: 是由类创建出来的一个具体存在的事物, 可以 直接使用- 说明:由哪一个类创建出来的对象, 就拥有在哪一个 类中定义的属性和方法
2.面向对象基本语法
2.1 类的定义
-
定义类的步骤
- 定义类
- 通过类创建对象
-
self参数
说明
:由哪一个对象调用的方法, 方法内的self 就是哪一个对象的引用- 注意:
- 在类封装的方法中,通过self. 访问对象的属性和方法
- 在类的外部,通过对象变量名. 访问对象的属性和方法
-
实例化:
- 在Python中,由类创建对象的操作又被称之为实例化
- 通过一个类可以创建多个对象
-
初始化方法
-
当使用类名() 创建对象时,会自动执行以下操作:
- 1)为对象在内存中分配空间——创建对象
- 2)为对象的属性设置初始值——初始化方法(init)
-
这个初始化方法就是__init__ 方法,init 是对象的内置方法
-
_init_ 方法是专门用来定义一个类具有哪些属性的方法
-
在初始化方法中增加对象属性
1. 把希望设置的属性值,定义成__init__ 方法的参数 2. 在方法内部使用self.属性= 形参接收外部传递的参数 3. 在创建对象时,使用类名(属性1, 属性2...) 调用
-
总结:初始化方法就是指的__init__()方法,创建对象的时候会自动调 用,用来定义类具有哪些属性
-
-
语法格式
# 定义类 class Person:# 类属性(所有实例共享)species = "Homo sapiens"# 初始化方法(构造函数)def __init__(self, name, age):# 实例属性self.name = name self.age = age# 实例方法def greet(self):return f"你好,我叫{self.name},今年{self.age}岁"# 创建对象 # 实例化对象(在Python中,由类创建对象的操作又被称之为实例化) person1 = Person("张三", 25) person2 = Person("李四", 30)# 访问属性和方法 print(person1.name) # 张三 print(person2.greet()) # 你好,我叫李四,今年30岁 print(Person.species) # Homo sapiens
-
举例1
# 需求:小猫爱吃鱼,小猫要喝水 class Cat:"""这是一个猫类"""def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫在喝水")# 通过Cat类创建tom对象 tom = Cat() tom.drink() tom.eat()print("-"*20) # 通过Cat类创建lazy_cat对象 lazy_cat = Cat() lazy_cat.eat() lazy_cat.drink()# 可以通过直接打印两个对象变量, 或者使用Python内置函数id(),查看两个对象的信息 print("-"*20) print(f"tom对象的内存地址{id(tom)}") print(f"lazy_cat对象的内存地址{id(lazy_cat)}")# 运行结果 小猫在喝水 小猫爱吃鱼 -------------------- 小猫爱吃鱼 小猫在喝水 -------------------- tom对象的内存地址2188968061528 lazy_cat对象的内存地址2188968061808
-
举例2
# 类名:狗 # 属性:名字、年龄、身高、体重... # 方法:吃、跑、拿耗子... class Dog(object):def __init__(self, name, age, height, weight):"""狗狗的属性:param name: 姓名:param age: 年龄:param height: 身高:param weight: 体重"""self.name = nameself.age = ageself.height = heightself.weight = weightdef run(self):