Python蟒蛇书学习笔记——第九章 类
#初稿完成时间:2022/7/3
#作者:XP钉子户
面向对象编程是Python语言特色之一。编写类时,可以提前设计好各种通用行为。基于类所创建的对象均拥有此类通用行为,根据类来创建对象称为实例化。
下面为本笔记的目录,可以点击目录跳转到对应的部分阅读。
文章目录
9.1 创建和使用类
创建类的方法:
class Dog:
def __init__(self,name,age):
"""初始化函数,每次根据Dog类创建新实例时,Python都会自动运行它。"""
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!")
注意:此处出现了self。self类似于Java语言内的this,只出现在类里面(换言之,实例化之后就不会出现self)。以self为前缀的变量可供类中的所有方法使用,可以通过任何类的实例来访问。如:
my_dog = Dog('Willie',6) #实例化一个对象my_dog
print(my_dog.name)
print(my_dog.age)
此时程序的输出为:
willie
6
像这种可以通过实例访问的变量称为属性。
9.2 根据类创建实例
9.2.1 类创建实例的方法
根据类创建实例的方法:
class Dog:
...
my_dog = Dog('willie',6) #这里的'willie'为name变量的初始值,6为age变量的初始值
此处通过Dog类创建了一个my_dog实例。这个创建过程中赋予了两个实参,在实例化时,Python会自动执行Dog类里面的初始化函数,并根据这个函数对my_dog的参数进行初始化。
Python也支持对同一个类创建多个实例。每个实例都拥有着类别相同的属性。
9.2.2 访问实例的属性和调用实例的方法
下面,我们对于my_dog实例访问属性和调用方法。
print("My dog's name is {}".format(my_dog.name))
print("My dog's age is {}".format(my_dog.age))
my_dog.sit()
my_dog.roll_over()
程序的运行结果如下:
My dog's name is willie
My dog's age is 6
willie is now sitting.
willie rolled over!
9.2.3 给属性指定默认值
可以通过在类的初始化函数中直接赋予self的某个属性默认值。如:
class Dog:
def __init__(self,name,age): #此处可以设定形参sex,也可以不设定。
self.name=name
self.age=age
self.sex='male'
def get_sex(self):
print("Your dog's sex is {}.".format(self.sex))
my_dog=Dog('willie',6)
my_dog.get_sex()
程序的运行结果如下:
Your dog's sex is male.
9.2.4 修改属性的值
修改属性的值有两种方法。
首先可以通过实例直接访问。如:
class Dog:
...
my_dog=Dog('willie',6)
my_dog.sex='female' #直接通过实例访问
my_dog.get_sex()
程序的运行结果如下:
Your dog's sex is female.
其次,可以在类里面定义一个修改属性的方法,使用实例时调用其方法来修改属性的值。如:
class Dog:
def __init__(self,name,age): #此处可以设定形参sex,也可以不设定。
self