Python的类
简要介绍python类的用法,梳理思维、留作参考。
类的创建
例1:
class Car():
def __init__(self, model, brand):
self.model = model
self.brand = brand
def des(self):
print('my car is {} brand,model is {}'.format(self.brand, self.model))
如例1,由class关键字定义了一个Car类。
- 注意类第一行由class开头,类名应采取驼峰法命名,首字母大写;
- init()方法,第一个参数self必须位于第一形参位,这是程序规定的,后跟字定义形参,形参的规定同普通函数一致;
- self可看作实例化的对象,self.property_name可给类属性赋值也可获取属性值;
- 类的内部可字定义函数(成员函数),成员函数第一个形参必须是self,第二往后的形参规则同普通函数一致。
类的实例化
例2:
class Car():
def __init__(self, model, brand):
--snip--
def des(self):
--snip--
car = Car('A6', 'audi')
car.des()
print(car.model)
如例2:
- 用car接收实例化对象,类参数是定义的__init__()方法中的参数;
- car.des()调用了实例的成员函数;
- car.model调用了实例的成员属性。
继承
例3:
class Car():
def __init__(self, model, brand):
--snip--
def des(self):
--snip--
class ElecCar(Car):
def __init__(self, model, brand):
super().__init__(model, brand)
self.battery = Battery(70, 'ts', 48)
继承有多种有点:
- 减少的代码,复用性、代码可读性得以提高;
- 可以实现更复杂的逻辑。
继承的用法:
- 如例3,定义子类时,要把父类传入子类;
- 子类的init()方法中要用super().init(),调用父类的初始化方法;
- 子类可以有自己的属性;
- 子类属性或成员方法同父类相同时父类的属性和方法会被覆盖。
类的引入
当单文件内的类过多,即使在代码重复降到最低,我们也难以避免文件过长,这时我们就要将类分开,以类名命名文件名,在我们需要时用import引入文件中的类。这样可避免代码过长的问题,且能在主文件中保持清晰的高级逻辑。
引用字定义模块的几种方法
# 几种引用方法
import module_name # 此方法会引入模块下的所有类及方法,不推荐使用,因为会引起方法覆盖问题
import module_name as p # 推荐,不会被覆盖且调用清晰
p.property_name
from module_name import Class1, Class2 # 推荐,引用明确
from module_name import * # 同方法1不推荐