Python学习笔记
参考书目:《Python编程从入门到实践(第2版)》,[美] Eric Matthes,袁国忠译
九、类
1、创建和使用类
1)创建类
class Dog: # 首字母大写的是类,类中的函数称为方法
"""模拟简单的小狗"""
def __init__(self,name,age): # __init__()是一个特殊方法,根据Dog类创建实例时会自动运行
"""初始化属性"""
self.name = name # 每个与实例相关联的方法调用都自动传递实参self,它是一个指向事例本身的引用
self.age = age # 以self为前缀的变量可供类中的所有方法使用。像这样可通过实例访问的变量称为属性
self.train_year = 0 # 设置初始值
def sit(self):
"""模拟蹲下"""
print(f"{self.name} is now sitting.")
def roll_over(self):
"""模拟打滚"""
print(f"{self.name} rolled over!")
def update_training(self,year):
"""将训练年龄设置为指定的值"""
self.train_year = year
def training(self):
"""打印训练年龄"""
print(f"The dog has been trained {self.train_year} years. ")
# 创建实例
my_dog = Dog('Willie',6)
2)访问属性
print(my_dog.name)
my_dog.age
Willie
6
3)调用方法
my_dog.sit()
my_dog.roll_over()
Willie is now sitting.
Willie rolled over!
4)直接修改属性的值
my_dog.train_year = 6
my_dog.training()
The dog has been trained 6 years.
5)通过方法修改属性值
my_dog.update_training(18)
my_dog.training()
The dog has been trained 18 years.
2、继承
原有的类称为父类,新的类称为子类,子类会自动获得父类的所有属性和方法。父类又称超类(superclass)。
1)定义子类
class ElectricDog(Dog): # 括号内指定父类名称
"""电子狗"""
def __init__(self,name,age): # 接受创建父类实例所需要的信息
"""
初始化父类的属性
再初始化电子狗特有属性
"""
super().__init__(name,age) # 调用父类的方法__init__(),让子类实例包含这个方法中的所有属性
self.battery_size = 20
def describe_battery(self):
print(f"This dog has a {self.battery_size}-Wh battery.")
my_edog = ElectricDog('Lucy',8)
my_edog.describe_battery()
This dog has a 20-Wh battery.
3、类编码风格
类名应采用驼峰命名法,即此类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词间加上下划线。
在类中,可使用一个空行来分隔方法,而在模块中,可使用两个空行来分隔类。