1. 对象的简介
- Python就是一个面向对象的编程语言
- 对象就是内存中用来存储数据的一块区域
- 对象也成为类的实例
- 对象的结构:
- id(): 标识 (唯一的,在C Python中,就是对象的 内存地址)
- type(): 类型 (用来表示当前对象所处类型,决定了对象的功能)
- value(): 值 (对象中存储的具体数据)
- 可变对象和不可变对象
- 不可变对象值不能改变,可变对象值可以改变
- 面向过程的编程方式:
- 编程逻辑简单, 思路清晰
- 复用困难, 修改困难
- 面向对象的编程方式:
- 所有操作通过对象进行
- 复用简单
2. 面向对象
- 面向对象的三个特点:
- 封装:把对象的属性私有化,同时提供可以被外界访问这些属性的方法。
- 继承:是使用已存在的类的定义,作为建立新类的基础技术,新类可以增加新的属性或新的方法,也可以用父类的功能,但不能选择性地继承。通过使用继承,能够非常方便地复用这些代码。
- 多态:表现为程序中定义的引用变量,所指向的具体类型和具体调用的方法,在编译期并不能确定,而是在程序运行期确定。
- 面对对象的技术方法:
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
- 继承:把对象的属性私有化,同时提供可以被外界访问这些属性的方法。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
3. 创建类class
3.1使用class创建类
- 类也是一个对象
- 类是一个type类型的对象
- 语法:()中如果没有父类可以不加
- 类名首字母大写
class 类名([父类]):
class Myclass():
pass
# print(Myclass)
# 创建对象mc,mc即Myclass的实例
mc = Myclass()
print(mc,type(mc))
<main.Myclass object at 0x00000111BEAFC668> <class ‘main.Myclass’>
3.2 isinstance() 用来检查是否属于某个类
- 返回True或False
r = isinstance(mc,int)
print(r)
False
3.3 向对象中添加变量
- 语法:
- 对象.属性名 = 属性值
class Myclass():
pass
# print(id(Myclass),type(Myclass))
mc = Myclass()
mc2 = Myclass()
# 向对象中添加变量
# 语法:
# 类名.属性名 = 属性值
mc.name = '孙悟空'
mc2.name = '白骨精'
print(mc.name)
print(mc2.name)
3.4 类的定义
-
- 类名 大写
-
- 类中的函数要定义至少一个默认形参
-
- 类中函数的调用时,不必输入默认形参,解析器可以自动传入
# 类的定义
class Person():
# 在类中的代码块可以定义变量和函数
# 类中定义的变量和函数会成为公共属性或公共方法
name = '钢铁侠'
# 在类中定义方法时需要定义默认形参
# 否则会报错:speak() takes 0 positional arguments but 1 was given
# 添加默认形参
def speak(w):
print('hello')
p1 = Person()
p2 = Person()
# 默认形参由解析器自动传递
# 调用时不用输入默认形参
p1.speak()
3.6 属性和方法
- 实例对象可以访问到类对象中的属性和方法
- 查找流程:(先找自己)
- 先找当前对象,有则返回,没有则下一步
- 再找所在类,有则返回,没有则报错
- 如果为共享的,保存到类中
- 如果为独有的,保存到实例对象中
- 一般情况下
- 属性保存到实例
- 方法保存到类
3.6 类中函数的默认参数-self参数
- 默认传参一般写作self
- 哪个对象调用,self就是谁
# 类不同于闭包,内部函数无法访问外部变量
class Person():
name = '超人'
# 在类中定义方法会默认传递参数
# 谁调用就传递谁,p1调用self就是对象p1,如果p2调用,w就是对象p2
# 一般把默认传参称作self
def speak(self):
print('你好我是%s'%self.name)
# print(w)
p1 = Person()
p2 = Person()
p1.name = '孙悟空'
p2.name = '猪八戒'
p1.speak()
p2.speak()
你好我是孙悟空
你好我是猪八戒
本文详细介绍了Python面向对象编程的基本概念,包括对象的结构、可变性和不可变性,以及面向对象的三大特性:封装、继承和多态。此外,还讲解了如何使用class关键字创建类,以及对象的实例化、属性和方法的使用。
2759

被折叠的 条评论
为什么被折叠?



