目录
1. 缘起
在面向对象编程中,我们编写表示现实世界中的事物和情景的 类 ,并基于这些类来 创建对象。类是对事物共性的抽象表示,对象是该类事物的一个个体,例如,动物就是一种“类”,狗、猫、人、羊就是一种“对象”。
所以我们编写的类具有事物的 通用行为,每个对象都 自动具备这种通用行为 ,然后可根据需要赋予每个对象 独特的个性 。
2. 创建 Dog 类
使用类几乎可以模拟任何东西。我们来编写一个表示小狗的简单类 Dog,它表示的不是特定小狗而是 任何小狗。对于大多数宠物狗,我们都知道些什么呢?它们都有名字和年龄,我们都还知道,大多数小狗会蹲下和打滚。由于大多数小狗都具备上述两项信息 属性(名字和年龄)和两种 行为(蹲下和打滚),我们的 Dog 类将包含它们。
这个类让 Python 知道,如何创建表示小狗的 对象,根据类来创建的对象称为 实例化 ,所以根据 Dog 类创建小狗对象的过程,也被叫做创建小狗的实例化。
根据 Dog 类创建的每个实例,都将存储名字和年龄,我们赋予了小狗蹲下 (sit()) 和打滚(roll_over())的能力:
# 类的创建和使用
class Dog:
'''一次模拟小狗的简单尝试'''
#属性
def __init__(self,name,age):
'''初始化属性 name 和 age '''
#获取于形参name相关联的值,并将其赋给属性 name
self.name = name
self.age = age
#行为
def sit(self):
'''模拟小狗收到命令时蹲下'''
print(f'{self.name} is now sitting.')
def roll_over(self):
'''模拟小狗收到命令时打滚'''
print(f'{self.name} rolled over!')
3. 创建实例
3.1 根据类创建实例
创建一个表示特定小狗的实例:
# 类的实例化,创建一条名为'willie'、年龄为6岁的小狗
my_dog = Dog('Willie',6)
print(f'My dog\'s name is {my_dog.name}.')
print(f'My dog is {my_dog.age} years old.')
3.1.1 访问属性
访问实例的属性,可使用 句点表示法。第二行代码访问 my_dog 的属性:name 。
注:句点表示法表示 Python 如何获悉属性的值
my_dog.name
在这里,Python 先找到实例 my_dog,再查找与实例相关联的属性 name;name 是 Dog 类中的属性,通过 self.name 来定义。
然后将 Dog 类中属性 name 的值返回给 my_dog 实例,此时,my_dog 实例也有了 name 的属性,再然后 my_dog 实例通过句点表示法调用 name 属性。第三行代码处,使用同样的方法来获取属性 age 的值。
输出的是有关 my_dog 相关的信息:
3.1.1 调用方法
根据 Dog 类创建实例后,就能使用句点表示法来调用 Dog 类中定义的任何方法。下面来让小狗蹲下和打滚:
my_dog.sit()
my_dog.roll_over()
要调用方法,可指定 实例的名称(这里是 my_dog)和 要调用的方法,并用句点分隔。遇到代码 my_dog.sit() 时,Python 在 Dog 类中查找方法 sit () 并运行其代码。
小狗按照我们的命令做了:
3.2 创建多个实例
可按需求根据类 创建任意数量的实例。下面在创建一个名为 your_dog 的小狗实例:
your_dog = Dog('lucy',3)
print(f'Your dog\'s name is {your_dog.name}.')
print(f'Your dog is {your_dog.age} years old.')
每条小狗都是一个 独立的实例,而且有自己的属性。
4. 代码整合
将创建的 Dog 类的实例,属性,方法代码整合在一起:
# 类的创建和使用
class Dog:
'''一次模拟小狗的简单尝试'''
def __init__(self,name,age):
'''初始化属性name和age'''
#获取于形参name相关联的值,并将其赋给属性 name
self.name = name
self.age = age
def sit(self):
'''模拟小狗收到命令时蹲下'''
print(f'{self.name} is now sitting.')
def roll_over(self):
'''模拟小狗收到命令时打滚'''
print(f'{self.name} rolled over!')
# 类的实例化,创建一条名为'willie'、年龄为6岁的小狗
my_dog = Dog('Willie',6)
print(f'My dog\'s name is {my_dog.name}.')
print(f'My dog is {my_dog.age} years old.')
my_dog.sit()
my_dog.roll_over()
print("\n")
# 类的实例化,创建一条名为'lucy'、年龄为3岁的小狗
your_dog = Dog('lucy',3)
print(f'Your dog\'s name is {your_dog.name}.')
print(f'Your dog is {your_dog.age} years old.')
运行结果如下:
5. 总结
终于复习回顾完类的相关知识点了。今天的分享总结就到这里了,如果有疑问的小伙伴,我们评论区交流嗷,笔者必回,我们下期再见啦 !