Python面向对象编程入门:类与对象的定义、实例化及使用详解
本文深入解析Python面向对象编程的核心思想,详细阐述面向过程与面向对象的区别。通过具体案例演示类的定义格式、成员变量与方法的设计,以及对象的实例化过程。内容涵盖对象内存模型、属性与方法的调用方式,以及如何查看和管理对象属性,帮助开发者掌握Python面向对象编程的基础实践。
Python面向对象编程概述
本文通过具体实例解析Python中的面向对象思想及其实际应用,旨在为读者提供清晰的参考与学习路径。
面向对象思想概述
1、面向对象的设计哲学
面向对象的设计建立在“万物皆对象”这一哲学观念基础之上。
面向对象与面向过程的区别
2、面向对象与面向过程的核心差异
面向过程思维
在生活场景中: 这是一种关注问题解决步骤的思维方式,强调亲自执行每一个环节来解决问题,类似于企业中的执行者角色。 在编程场景中: 代码按从上到下的顺序逐行执行,各模块间关系力求简单,功能相对独立,程序的整体流程在编写代码时已预先确定。
面向对象思维
在生活场景中: 这是一种寻找具备特定功能的个体,并委托其完成特定任务的思维方式,更贴近人类的直觉思考模式(指挥者角色)。 在编程场景中: 将数据及其操作方法封装在一起,形成一个相互依存的实体——对象; 对同类对象进行抽象,提取其共性以形成类; 类中的大部分数据仅能通过本类的方法进行处理; 类通过简洁的外部接口与外界交互,对象之间通过消息传递进行通信; 程序的执行流程由用户在实际使用过程中动态决定; 采用面向对象开发时,首先需寻找具备所需功能的对象;若不存在,则需创建具备该功能的新对象。 注意:面向对象是一种设计思想,而非特定的编程语言。
核心区别总结
a. 两者均为解决问题的思维方式,均能有效解决问题; b. 面向过程强调事必躬亲,亲自处理所有细节; c. 面向对象侧重于寻找或创建具备特定功能的对象,委托对象实现所需功能。
Python是一种支持面向对象特性的程序设计语言,其中“类”和“对象”是面向对象编程的核心要素。
类与对象的核心概念
类和对象详解
1、类和对象的基本概念
类:具有特定功能的一类实体的集合(群体概念)。
对象:类中一个具有特定功能的实体,能够解决具体问题,对象通常也被称为实例。
两者关系:类用于描述某一类对象的共同特征,而对象则是类的具体存在形式。
举例说明:
学生 张三、李四 快递 顺丰、韵达
总结:
类与对象的关系:
a. 类是对象的抽象,对象是类的具体体现。 b. 类也是一种数据类型,由用户自定义,类似于number、string等;类本身不占用内存空间,但其实例(对象)会占用空间。
类的定义与设计
2、类的定义方法
定义格式:
class 类名(object):
类体
说明:
a. Python中使用class关键字来定义类;
b. 类名必须是合法的标识符,命名规则遵循“大驼峰式命名法”(每个单词首字母大写);
c. 建议使用一个或多个有意义的单词组合而成,以清晰表达类的含义。
代码演示
# 一个简单的类的实例
class Person():
print("hello")
3、类的设计要素
设计类时只需关注三个核心要素:
1. 事物名称(类名):例如人类 (Person); 2. 特征(属性):例如身高(height)、年龄(age)等——通常对应名词; 3. 行为(方法):例如跑(run)、说话(say)——通常对应动词。
类中方法与属性的定义及使用
类中的方法和属性
1、方法和属性的定义方式
生活中描述事物主要涉及特征和行为。
Python中用类来描述事物也是如此。仅定义类而没有实际内容是没有意义的,因此定义类的本质是定义类中的成员(包括成员变量和成员方法)。
在类中定义的变量称为成员变量,在类中定义的方法称为成员方法(函数)。
成员变量——>类具有的特征,例如:人——>身高、性别、体重。
成员方法——>类具有的行为,例如:人——>吃、喝、玩、乐。
因此,拥有相同(或类似)属性和行为的对象都可以抽象提取为一个类。
class Persion():
#成员变量,初始值就是相当于默认值
name = ""
age = 0
height = 0
weight = 0
#成员方法
#在类的内部,使用def关键字来定义的一个方法
#注意:区别于普通方法,类中方法的参数必须包含参数self,且为第一个参数
#self代表类的实例(某个对象)
def run(self):
print("run")
def eat(self, food):
print("eat",food)
def sleep(self):
print("sleeping")
说明:定义了类,并在类中定义了成员变量和成员方法,但成员变量和成员方法如何被使用呢?
2、方法和属性的使用方式
2.1、实例化对象:
前文提到,对象是实实在在的个体,负责完成指定的任务。
对象的创建过程被称为对象的实例化过程。
语法格式:
对象名 = 类名()
'''
实例化对象
格式: 对象名 = 类名()
注意: 没有参数的时候,小括号也不能省略
'''
#实例化一个对象
pre1 = Person()
print(pre1)
print(type(per1))
print(id(per1))
per2 = Person()
print(per2)
print(type(per2))
print(id(per2))
3、对象调用方法和属性
per = Preson()
'''
访问属性
格式:对象名.属性名
赋值:对象名.属性名 = 新值
'''
per.name = 'lili'
per.age = 18
per.height = 160
per.weight = 80
print(per.name, per.age, per.height, per.weight)
'''
访问方法
格式:对象名.方法名(参数列表)
'''
per.run()
per.eat("apple")
per.sleep()
#问题:目前来看Person创建的所有对象属性都是一样的
per2 = Person()
print(per2.age)
per3 = Person()
print(per3.age)
总结:
访问变量采用格式:对象名.属性名; 访问方法采用格式:对象名.方法名(参数列表)。
对象内存模型与综合应用
4、内存中的对象模型
per = Person()
说明:程序中定义的Person类型变量per实际上是一个变量名,它存储在栈内存中,指向实际的Person对象;而真正的Person对象则存储在堆内存中。
综合练习:
第一天开学,请介绍你自己,包括姓名、年龄以及爱好。
#学生类
class Student():
#特征:成员变量
self.name = ""
self.age = ""
self.hobby =""
def introduce(self,name, age, hobby):
print("大家好,我是%s,今年%d岁,爱好是%s"%(name,age, hobby))
def singsong(self):
print("娘子~啊哈")
def dance(self):
print("广场舞跳起来...")
def lie(self):
print("我家特别穷,我小时候就一直在放牛,只有几万头....")
# 类实例化
stu = Student()
# 成员方法调用
stu.introduce('ldc',18,'跑步')
stu.singsong()
stu.dance()
stu.lie()
预期输出:
大家好,我是ldc,今年18岁,爱好是跑步 娘子~啊哈 广场舞跳起来... 我家特别穷,我小时候就一直在放牛,只有几万头....
如何查看所有属性和方法
class Test():
def __init__(self,name):
self.name = name
def test(self):
print('testing...')
test = Test('测试')
# 查看所有属性和方法
list1 = dir(test)
# 检查实例是否有这个属性
print(hasattr(test, 'name'),hasattr(test, 'test'),hasattr(test, 'tt'))
# 设置属性值
setattr(test,'name','测试2')
# 获取属性值
print(getattr(test, 'name'))
预期输出:
True True False 测试2
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









