python面向对象-day01-面向对象的思想

这篇博客介绍了Python面向对象编程的基础知识,包括面向对象的思想、类的使用语法、对象属性的操作、类的定义以及self、初始化方法和__str__方法的使用。文章强调了面向对象编程的核心思想——封装、继承和多态,并指出其简化复杂问题、符合人类思考习惯的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象的思想

1. 核心思想:
面向对象,是一种编程思想. 强调的是实现任何功能, 找一个对象来帮我们完成, 只需要关注完成
功能的结果.
2. 区分面向对象和面向过程
   面向过程: 注重的是步骤
   面向对象: 注重的是对象和完成功能的结果, 不用关注步骤 ,简化开发, 实现代码的重用.
3. 面向对象的特点和特征
特点:
1. 符合人们思考习惯
2. 将程序原从执行者转换成指挥者
3. 将复杂的事情简单化

特征: 封装,继承,多态

万物皆对象.

类的使用语法

1. 概念
在面向对象的概念中有两个重要的概念: 类 对象
并且:
    对象 由 类创建得到

2. 类的概念
类可以简单理解为 创建对象的模具.

类概念: 类 是用于对同一类事物 共有的特征和功能的 描述(抽象)

3. 语法:
中文描述女朋友类:
    外在特征: 性别,脸型,身高,体重
    内在功能: 做饭,洗衣服,花钱

类描述事物:
    外在特征:  属性 (在类中的变量) ---> 存储数据,方便后面使用
    内在功能:  方法 (在类中的函数) ---> 封装重复代码块

语法:
    class 类名:
        # 属性
        # 方法
        def 方法名1(self):
            #方法体
            pass
        def 方法名2(self):
            #方法体
            pass
    备注:
        a. 通过关键字 class 声明一个类
        b. 每一个类 取一个类名(标识符), 建议类名采用大驼峰命名
        c. 方法定义到类名的下面,缩进的里面. 方法的定义和函数差不多, 只是
        第一个形参用self占位.

4. 创建对象
对象: 实实在在的一个事物(实体) 被称为对象
对象: 由类(抽象)创建得到的, 这个过程被 实例 化

语法:
    变量名 = 类名()  # 创建对象(实例化对象)

备注:
    1, 真正创建对象的代码: 类名(), 但是 往往需要使用一个变量存储 创建的对象
    2, 使用对象 通过 对象的 "变量名" 使用对象
    3, 每次创建的对象的 地址是不一样的(每次创建的都是新对象)

设计一个类: 手机类
特征(属性):
功能(方法): 打电话,发短信,上网,看电影

class Phone:
    # 方法
    def call(self):
        print("打电话~~")

    def sendMsg(self):
        print("发短信~~")

    def surfInternet(self):
        print("上网~~")

    def movie(self):
        print("看电影~~")
print(id(Phone))

# 创建对象
iphone6 = Phone()
iphone7 = Phone()

# 使用对象
print(iphone6)
print(iphone7)

# 使用对象上的方法
iphone6.call()
iphone6.call()  
iphone6.sendMsg()  
iphone6.surfInternet()  

对象上属性的操作

1. 前提: 先创建对象
对象变量=类名()  # 没有类就自己定义一个类

2. 使用对象(就是使用对象上的属性和方法)
对象.成员

3. 使用对象上的属性
a. 添加属性
    对象.属性名 = 值  # 属性名 类似于变量名 存储数据
b. 查看属性
    print(对象.属性名)
c. 修改属性
    对象.属性名 = 新值
d. 删除属性
    del 对象.属性名
e. 判断是否有某个属性(attribute)
    hasattr(对象,属性名) ---> bool

4. 对象上方法的使用
对象.方法名()

定义类

class Phone:
	def call(self):
		print("打电话~")

	def sendMsg(self):
		print("发短信~")
#1. 前提: 先创建对象
iphone6 = Phone()

# 2. 操作对象上的属性
# 添加属性
iphone6.color = "土豪金"
iphone6.size = "6寸"  # 尺寸
iphone6.price = 2000  # 价格
# 查看
print(iphone6.color)
print(iphone6.size)
print(iphone6.price)
# 修改属性
iphone6.color = "白色"
print(iphone6.color)
# 删除属性
del iphone6.size
# print(iphone6.size) # 'Phone' object has no attribute 'size' 手机对象没有属性 size
# 判断
print(hasattr(iphone6, "size")) # 实参 实际的数据
print(hasattr(iphone6, "price"))


# 对象上方法的调用
iphone6.call()
iphone6.call()
iphone6.sendMsg()

self是什么

1. self的概念
a. 通过对象 调用对象上的方法, python解释器自动将调用方法的那个对象作为方法的第一个
参数传递给方法
b. 所以我们定义方法的时候第一个参数必须写self占位, 用于接收自动传入的对象
c. self到底是什么?  哪个对象调用我,self就是那个对象

2. 目的: 方便我们在方法中使用对象上的属性(数据)

定义一个类: 学生类
定义一个方法: 跑步的方法

class Student:
    # 方法
    def run(self): # self 谁调用我,我就是谁
        # print(id(self))
        print(f"{self.name}跑步锻炼身体~~~")

# 创建俩学生对象,添加属性
zhangfei = Student()
zhangfei.name = "张飞"
zhangfei.age = 18
zhangfei.run()
# print(id(zhangfei))

lisi = Student()
lisi.name = "李四"
lisi.age = 19
lisi.run()
# print(id(lisi))

“”"

初始化方法的使用

1. 初始化方法__init__()概念
a. 初始化方法也是在类中定义的一个方法, 第一个参数也是self
b. 特殊性
    1. 名字固定 __init__
    2. 调用时机: 创建对象的时候自动调用
c. 作用: 在初始化方法中 通过self绑定(添加)初始属性
        self.属性名 = 值

2. 具体语法:
class 类名:
    def __init__(self,形参1,形参2):
        self.属性1 = 形参1
        self.属性2 = 形参2

# 创建对象的时候传递给 __init__方法实参
类名(实参1,实参2)
类名(形参1=实参1,形参2=实参2)

定义一个类: 学生类
定义一个方法: 跑步的方法

class Student:
    def __init__(self, name, age):
        print("初始化方法,自动调用")
        self.name = name
        self.age = age

    # 方法
    def run(self):  # self 谁调用我,我就是谁
        print(f"{self.name}跑步锻炼身体~~~")


# 创建学生对象,添加属性
zhangfei = Student("张飞", 18)
# 初始化就自带了属性
# print(zhangfei.name)
# print(zhangfei.age)
zhangfei.run()
# 创建李四对象
lisi = Student(age=19, name="李四")
lisi.run()

__str__方法的使用

1. 说明
a. 默认通过print(对象) 输出的对象的描述信息 仅仅是对象的地址
b. 我们可以在类中 定义一个方法 __str__(self)
    特殊:
        1. 打印对象的时候自动调用
        2. 在__str__() 方法中返回对象的自定义的描述信息
class Student:
    def __init__(self,name,age):
        """初始化方法,绑定初始属性"""
        self.name = name
        self.age = age
        
    def run(self):
        print(f"{self.name},今年{self.age},在跑步锻炼身体~~")
        
    # 定义 __str__方法
    def __str__(self): # TypeError: __str__ returned non-string (type NoneType)
        return f"<学生{self.name}对象,内存地址{id(self)}>"  # hex(id(self))
        
# 创建对象
zhangfei = Student(name="张飞",age=18)
#zhangfei.run()
print(zhangfei)

lisi = Student(name="李四",age=18)
print(lisi)

总结

  1. 编程思想
    核心思想: 找个对象帮我实现功能,关注实现功能的结果

    三个特征: 封装,继承,多态

    特点:
    1. 符合人们思考习惯
    2. 将程序员从执行者转换成指挥者
    3. 将复杂的事情简单化(代码简单, 不考虑具体如何实现)

  2. 面向对象的语法
    类:

    class 类名:  # 类名采用大驼峰
    	def __init__(self,形参1,形参2):
            # 绑定初始属性, 创建对象的时候自动执行
            self.属性名1 = 形参1
            self.属性名2 = 形参2
            
        # 方法
        def 方法名(self,形参1...):
            # 方法体
            pass
    
    	# __str__
        def __str__(self):
            # 返回对象的定义描述信息
            return "字符串的描述信息"

对象:
对象变量=类名(实参1,实参2)
对象变量=类名(形参1=实参1,形参2=实参2)
使用对象
属性:
对象.属性名 # 查看
对象.属性名 = 值 # 添加
对象.旧属性名 = 新值 # 修改
del 对象.属性名 # 删除

方法:
    对象.方法名([实参]) # 实参从形参的第二个参数开始传递
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值