Python ~ 面向对象 - 基础

Python ~ 面向对象 - 基础

本章内容是面向对象编程的基础语法篇
以下是章节和目录
一、面向过程概念
二、面向对象概念
三、类的定义和对象的产生
四、定制对象自己独有的属性
五、属性的查找顺序



一、面向过程概念

1、python中的两大范式:

1.面向过程
2.面向对象

他们两个都不是新的技术,而是一种做事的思维方式

2、面向过程

面向过程核心是过程二字,即先干什么,在干什么,最后干什么,也就是机械式的思维方式

3、举例

生活中得例子:把大象放冰箱分几步?
1. 打开冰箱门
2. 把大象放进冰箱
3. 关上冰箱门

4、面向过程优缺点:

优点:把复杂的问题简单化,进而流程化
缺点:扩展性差
使用场景:对扩展性要求不高的地方
面向过程就是一种做事情的思维方式


二、面向对象概念

1. 在程序中:

就是盛放数据属性和功能的集合体/容器

2. 在生活中:

特征与技能的结合体

3. 面向对象的优缺点:

优点:扩展性强
缺点:学习难度大
使用场景:对扩展性要求不高的地方
**面向对象核心是对象二字
在python中,一切皆对象**

三、类的定义和对象的产生

1、类的介绍

  1. 对象:'特征’与’技能’的结合体

“”" 站在不同的角度,分的种类不一样 “”"

  1. 类:一系列相似特征与相似技能的结合体
"""
问题来了?到底是先有类还是先有对象?
1. 程序中
        	# 一定是先定义类,调用类产生对象(****************)
2. 生活中
			# 先有对象,在有类
"""

2、类的定义

 """
    专业语法来定义类
        class 类名():
            pass
            def index():
            	pass
 """
##################################
"""
	语法格式:
		class 类名():
			pass
			def 方法名():
				pass
	1. 类名的命名遵循变量的命名规范
	2. 类名的首字母一般大写
	3. 如果类名存在多个单词,一般是大驼峰格式
"""

3、类在定义过程中发生了什么

在这里插入图片描述

"""
    定义类发生的几件事情?
        1. 定义类,会立马执行类体代码
        2. 产生类的名称空间,并且把类中的属性和方法名字丢在类的名称空间中,其实就是丢在大字典里
        3. 把类的名称空间绑定给__dict__,类名.__dict__
"""

3、如何产生对象?及 对象如何调用方法和属性

在这里插入图片描述

class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # 函数写到类里面叫方法
    def choose_course(self, name, courses):
        print('%s选课成功%s' % (name, courses))


# 如何查看类的名称空间?
# print(Student.__dict__)  #  {'school':'SH','choose_course':函数的内存地址}


# 如何产生对象?
stu1 = Student()  # 类名()
# stu2 = Student()  # 类名()
'''调用类产生对象,得到的额对象就是一个空对象,空字典'''
# print(stu1.__dict__) # {}  # 对象有名称空间吗
# print(stu2.__dict__) # {}  # 对象有名称空间吗
print(stu1.school)
stu1.choose_course('kevin', "python")
# print(stu1.choose_course('kevin', "python"))

stu1 = Student()  # 类名() 这个步骤就是实例化一个对象
print(stu1.school)  # 对象调用类的属性

总结:
stu1 = Student()
# 就是 :实例化类并得到一个对象,通过对象去调用并执行方法。
# 调用类的过程也叫实例化的过程,得到的结果就是一个实例
stu1.choose_course(‘kevin’, “python”)
# 就是:对象去调用并执行方法
print(stu1.school)
# 就是:对象调用类的属性
函数写到类里面叫方法


四、定制对象自己独有的属性

方式一:

__dict__ 如下: 对象产生自己的属性,就是对象自己使用 点 __dict__ 方法添加:(变量 赋值符号 变量值)

在这里插入图片描述

class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # 函数写到类里面叫方法
    def choose_course(self, name, courses):
        print('%s选课成功%s' % (name, courses))


stu = Student()  # 实例化产生的一个对象
print(stu.__dict__)  # 查看对象的名称空间
stu.__dict__["name"] = "kevin"    # 这个添加属性的方法就是给对象定制自己的属性
print(stu.__dict__)  # {'name': 'kevin'}
print(Student.__dict__)  # 查看类的属性空间,全局名称空间

# 给对象添加属性其实就是给对象属性的字典添加值

方式二:

 点语法(对象属性 加点)  如下: 对象点dict 赋值符号 变量值

在这里插入图片描述

class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # 函数写到类里面叫方法
    def choose_course(self, name, courses):
        print('%s选课成功%s' % (name, courses))


stu = Student()  # 实例化产生的一个对象
print(stu.__dict__)  # 查看对象的名称空间
print(Student.__dict__)  # 查看类的属性空间,全局名称空间
# stu.__dict__["name"] = "kevin"    # 这个添加属性的方法就是给对象定制自己的属性
# print(stu.__dict__)  # {'name': 'kevin'}
stu.name = "jack"  # 和stu.__dict__["name"] = "kevin" 是一个意思,给对象属性定制自己的属性
print(stu.__dict__)
stu.gae = 20
print(stu.__dict__)

方式三:

 初始化方法( __init__ 和 init )如下:

init 方法:

在这里插入图片描述

__init__  方法:

在这里插入图片描述

# class Student():
#     # 定义一个特征
#     school = 'SH'  # 属性
#     country = 'China'
#
#     # 函数写到类里面叫方法
#     def choose_course(self, name, courses):
#         print('%s选课成功%s' % (name, courses))
#
# stu = Student()
# stu2 = Student()
# stu3 = Student()
#
# def init(stu_dict, name, gae, gender):
#     stu_dict.name = name
#     stu_dict.gae = gae
#     stu_dict.gender = gender
#     stu_dict.courses = []
# init(stu, "kevin", 20, "male")
# init(stu2, "kevin2", 21, "male")
# init(stu3, "kevin3", 22, "male")
# print(stu.__dict__)
# print(stu2.__dict__)
# print(stu3.__dict__)


class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # 初始化方法,当类被加括号调用的时候,会自动触发这个函数的执行
    def __init__(stu_dict, name, gae, gender):
        stu_dict.name = name
        stu_dict.gae = gae
        stu_dict.gender = gender
        stu_dict.courses = []
        
    # 函数写到类里面叫方法
    def choose_course(self, name, courses):
        print('%s选课成功%s' % (name, courses))
        
'''类被调用的时候,类里面传的第一个参数是这个类产生的对象'''
# 初始化方法,当类被加括号调用的时候,会自动触发这个函数的执行
stu = Student('kevin', 20, 'male')  #  # 相当于 stu = Student(stu, 'kevin', 20, 'male')
print(stu.__dict__)

总结:
1、函数写到类里面叫方法
2、初始化方法,当类被加括号调用的时候,会自动触发这个函数的执行
3、类被调用的时候,类里面传的第一个参数是这个类产生的对象
4、调用类的过程就是实例化的过程,得到的结果就是一个实例


五、属性的查找顺序

属性分两种:1. 类属性 2 对象属性

1. 类属性

类属性的查找 如下:

在这里插入图片描述

class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # 函数写到类里面叫方法
    def choose_course(self, name, courses):
        print('%s选课成功%s' % (name, courses))
# 1. 类属性的查找
print(Student.school)
print(Student.country)
# print(Student.country1)  # 查找没有的属性会报错

# 类增加属性
Student.aaa = 'xxx'
print(Student.__dict__)
# 修改
Student.school = 'beijing'
print(Student.__dict__)
# 删除
del Student.school
print(Student.__dict__)

2 对象属性

对象属性的查找 如下:

在这里插入图片描述
在这里插入图片描述

#########################对象属性
class Student():
    # 定义一个特征
    school = 'SH'  # 属性
    country = 'China'

    # # 初始化方法,当类被加括号调用的时候,会自动触发这个函数的执行
    def __init__(self, name, age, gender, course=[]):
        # stu_dict => stu
        # stu_dict => stu1
        self.name = name  # stu.__dict__['name'] = 'kevin'
        self.age = age  # stu.__dict__['age'] = 20
        self.gender = gender  # stu.__dict__['gender'] = 'male'
        self.courses = course  # stu.__dict__['courses'] = []

    # 函数写到类里面叫方法
    def choose_course(stu_dict, course):
        stu_dict['courses'].append(course)
        print('%s选课成功%s' % (stu_dict['name'], stu_dict['courses']))

stu = Student('kevin', 20, 'male')
# print(stu.__dict__)  # 对象属性,对象调用

# 查看
# print(stu.__dict__['name1'])
# print(stu.name)  # 查看不存在的属性 报错

# print(stu.age)  # 20
# print(stu.gender)  # male

print(stu.school)
# print(stu.__dict__['school'])  # 只能从对象自己的属性里面去查找,没有则直接报错
stu.school = 'aaaaa'
print(stu.school)

'''对象的属性查找,先从自己对象属性里面去找,如果找到了,直接返回,如果找不到,在去产生这个对象的类中取查找'''
print(stu.school)

# 增加
stu.aaa = 'xxx'
print(stu.__dict__)

# 修改
stu.name = 'xxxx'
print(stu.__dict__)

# 删除
del stu.name
print(stu.__dict__)

总结:
1、属性分两种:1. 类属性 2 对象属性
2、类属性的查找, 类调用 , 查找没有的属性会报错。
3、类属性:有查找属性,增加属性,修改属性,删除属性
4、对象属性,对象调用,查看不存在的属性会报错。
5、只能从对象自己的属性里面去查找,没有则直接报错
6、对象的属性查找,先从自己对象属性里面去找,如果找到了,直接返回,如果找不到,在去产生这个对象的类中取查找
7、对象属性:有查找属性,增加属性,修改属性,删除属性


总结

以上就是今天要讲的内容,本文仅仅简单介绍了python~面向对象的基本使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值