目录
一、类与实例的关系
二、快速入门-面向对象的方式解决养猫问题
三、类和对象的区别和联系
四、对象在内存中的存在形式
五、属性/成员变量
1、基本介绍
2、注意事项和细节说明
六、类的定义和使用
1、如何定义类
2、如何创建对象
3、如何访问属性
七、对象的传递机制
八、对象的布尔值
一、类与实例的关系
1、文档:9. 类 — Python 3.12.4 文档
2、类与实例的关系-示意图
二、快速入门-面向对象的方式解决养猫问题
# 定义一个猫类,age,name,color是属性,或者称为成员变量
# Cat 类,就是自己定义的一个新类型
# 定义 Cat类
class Cat:
# age,name,color是属性
name = None # 名字属性
age = None # 年龄属性
color = None # 颜色属性
# 通过Cat类,创建实例(实例对象/对象)
cat1=Cat()
# 通过对象名.属性名,可以给各个属性赋值
cat1.name="小白"
cat1.age=2
cat1.color="白色"
# 通过对象名.属性名,可以访问到属性
print(f"cat1的信息为:name:{cat1.name} age:{cat1.age} color:{cat1.color} ")
三、类和对象的区别和联系
通过上面的案例可以看出:
1、类是抽象的,概念的,代表一类事物,比如人类,猫类....,即它是数据类型
2、对象是具体的,实际的,代表一个具体的事物,即实例
3、类是对象的模板,对象是类的一个个体,对应一个实例
四、对象在内存中的存在形式
五、属性/成员变量
1、基本介绍
1)类中定义的属性(变量),我们也称为:成员变量
2)属性是类的一个组成部分,一般是字符串、数值,也可以是其他类型(list、dict等),比如前面定义的Cat类的name、age,就是属性
2、注意事项和细节说明
1)属性的定义语法同变量,示例:属性名=值,如果没有值,可以赋值None
None是Python的内置常量,通常被用来代表空值的对象
2)如果给属性指定的有值,那么创建就有值
# 定义 Cat类
class Cat:
# age,name,color是属性
name = "小白" # 名字属性
age = 2 # 年龄属性
color = "白色" # 颜色属性
# 通过Cat类,创建实例(实例对象/对象)
cat1=Cat()
# 通过对象名.属性名,可以访问到属性
print(f"cat1的信息为:name:{cat1.name} age:{cat1.age} color:{cat1.color} ")
# cat1的信息为:name:小白 age:2 color:白色
六、类的定义和使用
1、如何定义类
定义类的基本语法:
class 类名:
属性...
行为...
1)上面是定义类的基本语法,还有很多细节
2)class是关键字,表示后面定义的是类
3)属性,即定义在类中的变量(成员变量)
4)行为,即定义在类中的函数(成员方法)
2、如何创建对象
基本语法:
对象名 = 类名()
cat = Cat()
3、如何访问属性
基本语法:
对象名.属性名
cat.name
cat.age
七、对象的传递机制
# 对象的传递机制
class Person:
age=None
name=None
p1=Person()
p1.age=10
p1.name="小明"
p2=p1 # 把p1赋给p2,即p2指向p1
print(p2.age) # 10
print(f"p1.name地址:{id(p1.name)} p2.name地址:{id(p2.name)}") # 地址是相同的
八、对象的布尔值
1、Python一切皆为对象,所有对象都有一个布尔值,通过内置函数bool()可以获取对象的布尔值
2、下面对象的布尔值为False
1)False
2)数值0
3)None
4)空字符串
5)空列表
6)空元组
7)空字典
8)空集合
3、案例说明
# 对象的布尔值
print("---以下对象的布尔值为False---")
print(bool(False))
print(bool(0))
print(bool(None))
print(bool("")) # 空字符串
print(bool([])) # 空列表
print(bool(())) # 空元组
print(bool({})) # 空字典
print(bool(set())) # 空集合
# 因为所有对象都有一个布尔值,有些代码直接使用对象的布尔值做判断
content=""
if content:
print(f"hi {content}")
else:
print("空字符串")
lst=[1,2]
if lst:
print(f"lst:{lst}")
else:
print("空列表")