面向对象基础
面向对象
面向对象基础
1、面向对象思想简介
-
面向过程
自上而下执行 逐步求精
各模块之间相对简单 在功能上相对独立
每一模块内 由顺序 、分支、循环结构组成的
-
面向对象
把数据、数据操作方法 放在一起 作为一个相互依存的整体 对象对同类对象抽象出其共性 形成类
类中的大多数数据 只能用本类的方法去处理
类通过一个简单的接口与外界发生关系
流程 由用户在使用中决定的
-
理解面向对象
-
面向对象是相对面向过程来说
-
面向对象和面向过程都是一种思想
面向过程
关注的是解决问题需要哪些步骤
面向对象
将功能封装进对象 强调了具备功能的对象
-
面向对象是基于面向过程的
-
面向对象的特点
是一种符合人们思考的思想
可以将复杂的事情简单化
将程序由执行者变成了指挥者
-
类与对象的关系
python中描述事物 通过类的形式展现的 类是具体事物的抽象 概念上的定义
对象是符合该类定义的真实存在的事物的个体
我们说的汽车、美女、帅哥等等 这些都是类
比如说 咱班的婷婷、伟哥的桌子那么这些就是真实存在的对象 符合(美女和桌子)类的定义
-
面向对象的特点
封装、继承、多态
-
2、第一个python类
-
定义
类名: 首字母大写 遵循标识符的命名规则
属性:也就是变量 遵循标识符的命名规则
行为:也就是功能、也就是函数 遵循标识符的命名规则
-
设计类
汽车类
class Car: 属性 color = '白色' weight = '2吨' jigang = '4' 行为 def lak(self): print('可以拉乘客')
-
创建类
-
格式
class 关键字 类名([类名]):
pass
-
说明
class 是定义类的关键字
类名 类的名字
() 继承的父类 如果不写 默认继承object类
-
实例
class Test(object): pass # 定义了一个空类 # 类实例化成为对象 t = Test() print(Test) print(t) # 获取当前对象是哪个类的实例化 print(t.__class__) ```
-
-
创建存在属性与方法的类
class Person: # 属性 name = '李俊' age = 19 sex = '女' facevalue = 'low' # 行为 def dbj(self): print('造福人类') def hobby(self): print('抽烟、喝酒、烫头')
3、使用类实例化对象
-
格式
对象名 = 类名([参数])
-
说明
参数列表 :为了以后给属性赋值(参数传递)
-
实例化代码
# 实例化出李俊对象 lijun = Person() # 调用属性 print(lijun.name) print(lijun.age) # 调用方法 print(lijun.hobby())
4、self对象
-
概述
- 在类的内部 使用def关键字来定义方法(函数) 与一般函数不同 方法必须存在第一个参数 也就是self 且为第一个参数 self代表的是当前类的实例 而非类
- self参数名 可以随便写 但是建议使用self
-
实例
class Test: name = 'lucky' age = 18 def say(self): print('测试self参数') # abc 就是外部当前调用的对象(谁调用 abc就是谁) # 调用内部的所有属性和方法 # self叫什么都行 但是统一叫self def speak(abc): # 验证参数abc 和 外部对象t1的关系 print(abc) print('abc_id', id(abc)) # 调用属性 print(abc.name) print(abc.age) # 使用abc对象 创建对象属性 abc.sex = 'man' abc.say() # 调用方法 print(abc.__dict__) print('speak方法') # 对象 t1 = Test() t1.speak() print('t1', t1) print('t1_id', id(t1)) # 调用self创建的对象属性 sex print(t1.sex) # 查看t1对象内部的所有属性和方法 print(t1.__dict__)
注意
- self就是当前类实例化的对象 哪个对象调用它 他就是哪个对象
- self不是必须的名称 但是作为标准 必须叫self
- self在类的内部使用 用于调用和创建对象属性
6、对象方法的使用
class Test:
name = 'lucky'
age = 18
# def test_args(self, sex, hobby):
# def test_args(self, sex, hobby, *args):
# def test_args(self, sex, hobby, **kwargs):
def test_args(self, sex, hobby, *args, **kwargs):
# 在调用test_args的时候 创建了对象属性 sex、hobby
self.sex = sex
self.hobby = hobby
print(args)
print(kwargs)
return sex, hobby
t1 = Test()
# 调用
t1.test_args('man', '写代码')
t1.test_args(sex='man', hobby='写代码')
t1.test_args('man', '写代码', '非常喜欢写代码', '一天不写代码浑身难受')
print(t1.test_args('man', '写代码', sign1='非常喜欢写代码', sign2='一天不写代码浑身难受'))
print(t1.__dict__)
对象中的方法和函数使用一样(参数、返回值) 但是就多了一个self参数
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16021537.html