1.面向对象和面向过程
面向过程重点在于: 步骤
面向对象重点在于: 对象
一般大型项目都采用面向对象编程思维
2.面向对象三大特性
object: 所有类的父类,超类,上帝类,基类
封装: 把属性和方法隐藏到类中,对外提供公共的接口
继承: 子类继承了父类的属性和方法
多态: 传入不同的对象,实现不同的效果(python中的多态是伪多态,其原因是它不需要声明变量类型,导致它的类型是随着传入的参数而变化的,具体看视频)
3.类和对象
类: 类是具有相同特征和行为的一类事物的统称,是抽象的概念
特征: 属性
行为: 方法
对象: 对象是类的具体体现,实际存在的事物
类和对象关系: 先有类,再根据类创建对象
4.定义类和创建对象
知识点:
1.类的组成: 属性和方法
2.定义类的格式:
class 类名():
pass
3.创建对象的格式: 对象名 = 类名()
4.对象调用方法: 对象名.方法名()
示例:
"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
"""
# 1.先定义类
class Person():
# 方法(本质就是一个函数,特殊:形参第一个位置是self)
def study(self):
print('好好学习,天天向上')
# 2.再创建对象
zs = Person()
# 3.对象调用方法
zs.study()
5.self关键字
知识点:
self中文含义: 自己
self在python中含义: 调用该方法的对象本身的地址
示例:
"""
类的组成: 属性和方法(函数)
定义类的格式:
class 类名():
pass
创建对象的格式:
对象名 = 类名()
对象调用方法:
对象名.方法名()
self关键字:自己(调用该函数的对象自己)
"""
# 1.先定义类
class Person():
# 方法(本质就是一个函数,特殊:形参第一个位置是self)
# self谁调用该方法,self就代表谁
def study(self):
print('self:', self)
print('好好学习,天天向上')
# 2.再创建对象
# 3.对象调用方法
zs = Person()
print('张三:',zs)
zs.study()
ls = Person()
print('李四:',ls)
ls.study()
6.打印对象地址的两种方式
知识点:
1. 直接打印对象名,即print(对象名): 显示的是16进制格式的地址
2. id函数打印对象名: 显示的是10进制格式的对象地址
示例:
# 1.先定义类
class Person():
# 方法(本质就是一个函数,特殊:形参第一个位置是self)
# self谁调用该方法,self就代表谁
def study(self):
print('好好学习,天天向上')
# 2.再创建对象
zs = Person()
print('直接打印对象显示的是16进制格式:', zs)
print('使用id(对象名)显示的是10进制格式:', id(zs))
# 3.对象调用方法
zs.study()
7.类外添加属性和获取属性
知识点:
类外添加对象属性: 对象名.属性 = 值
类外获取对象属性: 对象名.属性
示例:
"""
类外添加对象属性: 对象名.属性 = 值
类外获取对象属性: 对象名.属性
"""
# 1.定义类
class Student():
# 定义学习方法
def study(self):
print('我在学习')
# 2.根据类创建对象
stu = Student()
# 3.给stu对象添加属性
stu.name = '斌子'
stu.age = 18
# 4.获取stu对象的属性
print('姓名:' ,stu.name)
print('年龄:' ,stu.age)
8.类内添加属性和获取属性
知识点:
类内添加对象属性: self.属性 = 值 #self是对象的地址
类内获取对象属性: self.属性
示例:
"""
类内添加对象属性: self.属性 = 值
类内获取对象属性: self.属性
"""
# 1.定义类
class Student():
# 定义学习方法
# self代表调用该方法的对象自己 self == stu
def study(self):
# 3.给stu对象添加属性
self.name = '斌子'
self.age = 18
# 4.获取stu对象的属性
print(f'{self.age}岁的{self.name}正在学习...')
# 2.根据类创建对象
stu = Student()
# 3.调用方法
stu.study()
9.魔法方法
知识点:
魔法方法:
1. 方法名格式: _ _方法名_ _()
2. 特殊点: 在一定的时机,自动调用
3. 常见的魔法方法:
(1). __init__()
执行时机:创建对象时自动调用
作用: 初始化对象(给对象的属性赋值)
(2).__str__()
执行时机:打印对象时调用
作用: 打印对象时打印的内容是str返回的字符串,注意必须返回字符串,否则报错
(3).__del__()
执行时机:删除对象时自动调用
作用: 一般用于记录对象删除的日志
init魔法方法示例:
# 1.先有类
class Student():
def __init__(self,xm,nl):
self.name = xm
self.age = nl
# 学习方法
def study(self):
print(f'{self.age}岁的{self.name}正在学习...')
# 2.创建对象
# 3.调用方法
stu1 = Student('张三',18) # 自动执行init方法
stu1.study()
stu2 = Student('李四',28) # 自动执行init方法
stu2.study()
str魔法方法示例:
# 1.先定义类
class Student():
# 属性
def __init__(self,name,age):
self.name = name
self.age = age
# 实例方法:必须手动调用
def get_str(self):
return f'姓名:{self.name},年龄:{self.age}'
# str魔法方法: 打印对象名的时候,自动调用
def __str__(self):
return f'姓名:{self.name},年龄:{self.age}'
# 2.创建对象
stu = Student('张三',18)
# 3.需求:打印对象的信息 姓名和年龄
print(stu)
del魔法方法示例:
# 1.先定义类
class Student():
def __init__(self, name, age):
# 属性
self.name = name
self.age = age
# del魔法方法: 删除对象时自动调用
# 删除对象: 默认程序结束时自动删除对象 或者 提前del手动删除
def __del__(self):
print('对象被删除了...')
# 2.创建对象
stu = Student('张三', 18)
# 3.手动删除对象
del stu
print('程序的最后一行代码....')
10.定义类的3种方式
知识点:
在python3.x版本之前: 旧式类 想要变成新式类必须手动继承object
python3.x版本之后: 新式类: 默认都继承了object类
也就是3以后,为了更省略,继承object都不用你写了.甚至连括号都不用写
示例:
# 定义类方式1:
class Person1(object):
def show(self):
print('我是person1')
# 定义类方式2 相当于省略了object
class Person2():
def show(self):
print('我是person2')
# 定义类方式2 连括号都省略了
class Person3:
def show(self):
print('我是person3')
标签:stu,对象,self,基础,面向对象,print,方法,属性
From: https://www.cnblogs.com/nanguyhz/p/16800101.html