9.1 创建和调用类
class Restaurant(): #类名首字母须大写
def __init__(self, restaurant_name, cuisine_type): #方法:这里前后两个空格;括号中包含若干形参,其中self必不可少且在最前;self是一个指向实例本身的引用,让实例能够访问类中的属性和方法.
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type #属性:这里获取存储在形参中的值;以self为前缀
self.xxx = 0 #这里是设置默认值
def describe_restaurant(self): #由于不需要额外信息,因此只有一个形参self
print('The restaurant name is ' + self.restaurant_name.title()
+ ' and its cuisine type is ' + self.cuisine_type.title() + ' .')
def open(self):
print(self.restaurant_name.title() + ' is open now.')
restaurant = Restaurant('Hollywood', 'italy food') #根据类创建实例
print(restaurant.restaurant_name) #这里访问属性(本质是访问self.restaurant_name)
restaurant.describe_restaurant() #调用方法;这里的实例前缀不要忘记
restaurant.open()
9.2 使用类和实例
9.2.1 修改属性的值
1.直接修改
restaurant.xxx = 3 #与默认属性名称对应即可
2.通过方法修改、递增
def update_attribute(self, yyy):
self.xxx = yyy
self.xxx += yyy
9.3 继承
如果要编写的类是另一个现成类的特殊版本,可使用继承.
原有类称为父类,新类称为子类,
子类还可以定义自己的属性和方法.
9.3.1 子类的方法super().__init__()
首先是父类的代码,必须包含在当前文件且在子类前面;
class Yyy(Xxx):
def __init__(self, ..., ..., ...):
super().__init__(..., ..., ...)
9.3.2 给子类定义属性和方法
继承后可添加区分子类和父类所需的新属性和方法
就在super().函数下面添加即可,语法为
self.new_attribute = #设置新属性及其初始值
def new_function(self): #添加新方法
9.3.3 重写父类的方法
对于父类的方法,只要不符合子类模拟的实物特性,都可对其进行重写
9.3.4 将实例用作属性
将类的一部分作为一个独立的类提取出来.
先定义新类的名字
class New_class():
def __init__(self, new_attribute):
self.new_attribute = new_attribute 初始化属性
然后在子类中super()函数后
self.attribute_name = New_class()
9.4 导入类
python允许将类存储在模块中,然后在主程序中导入所需的模块
9.4.1 导入单个类
已有模块module.py中的类为Class
创建另一文件
from module import Class #注意这里没有空格,下一行顶格写
9.4.2 在一个模块中存储多个类
同一模块中的类之间存在某种相关性,可根据需要在一个模块中存储任意数量的类.
9.4.3 在一个模块中导入多个类
将多个类用逗号隔开即可
9.4.4 导入整个模块
import module
9.4.5 导入所有类
from module import *