Python基础 - 20210525 -基础12 类和继承
程序员文章站
2022-07-15 15:37:13
...
知识点 类方法,类的对象方法,静态方法,重写,继承,super
class Car:
'''
该初始化方法没有返回值,默认返回None
'''
def __init__(self,name):
self.name=name
pass
# 以下为类的对象方法
'''
1、类方法必须又一个默认参数self,是指调用时的实例对象
2、类方法也可以写返回值
'''
def steer(self):
print("驾驶中")
return "啥也不是"
# 以下为类方法
@classmethod
def stop(cls):
return "停止开车"
# 以下为静态方法,无需传默认参数,无法从该方法中获取到类,或类实列,只是放到类下来做管理
@staticmethod
def xiche():
return "每个人都要调用洗车的方法"
# 继承写法 拥有父类的所有方法和类变量
class SuperCar(Car):
# super在init函数中的使用
def __init__(self,name,color):
super(SuperCar, self).__init__(name)
self.color=color
# 重写,和父类重名的方法就是重写,优先使用自己类的
def steer(self):
# 在用自己的时,也想拥有父类的方法,使用super,super代表父类的实列
super().steer()
print("SuperCar驾驶中")
return "SuperCar啥也不是"
pass
# 类对象方法的调用
my_car =Car()
my_car.steer()
# 类方法的调用
Car.stop()
# 静态方法的调用,类和实列都能调用
Car.xiche()
my_car.xiche()
练习题
一,定义一个手机类,
- 定义两个实例方法,让手机具有打电话和录音的方法;
- 打电话的时候可以录音,也可以不录音。(方法调用其他方法,并通过参数控制是否调用)
class Phone:
def __init__(self,phone_number):
self.phone_number=phone_number
def call_phone(self,phone_number,is_recording=False):
if type(phone_number) != int or len(phone_number) != 11:
return "电话拨打失败"
if is_recording:
self.recording()
return "电话拨打成功,并录音成功"
else:
return "电话拨打成功"
def recording(self):
return "录音成功"
二,简述类方法和实例方法,静态方法
定义:
1、实例方法:第一个参数必须是实例对象-- self,通过它来传递实例的属性和方法(也可以传类的属性和方法)
2、类方法:使用装饰器@classmethod。第一个参数必须是当前类对象-- cls,通过它来传递类的属性和方法(不能传实例的属性和方法)
3、静态方法:使用装饰器@staticmethod,没有self,cls,但是方法体中不能使用类或实例的任何属性和方法,一般放到类里面,用于方便管理
调用:
1、实例方法:只能由实例对象调用。
2、类方法:类和实例对象都可以调用。
3、静态方法:类和实例对象都可以调用。
三,简述类属性和实例属性
类属性是类所特有的,所有实例共享这个类属性,类属性经常定义在类的开头,方法的外面
实列属性,可以通过类实列来创建,包含类所有的属性,也可以创建自己的实列的属性
四, 定义一个 ExcelHandler 类,所有方法不需要实际操作实现(不需要你真的去打开 excel, 不需要你真的把数据读出来。我们练习的是定义类的思维。)
- 初始化传入 文件路径。
- 定义打开 excel 方法。
- 定义获取 sheet 表格方法,根据 名称获取
- 定义读取 sheet 表格数据的方法。 (读取需要先打开,再获取表格。)
- 定义关闭文件方法
class ExcelHandler:
def __init__(self, path, sheet_name, row, col):
self.path = path
self.sheet_name = sheet_name
self.row = row
self.col = col
def open_excel(self):
readbook = xlrd.open_workbook(self.path)
return readbook
def get_sheet(self):
path = self.open_excel(self.path)
sheet = self.open_excel().sheet_by_name(self.sheet_name) # 名字的方式
return sheet
def get_sheet_value(self):
path = self.open_excel(self.path)
sheet = self.get_sheet(self.sheet_name)
rows = sheet.row(self.row)
cols = sheet.col(self.col)
return rows, cols
def close_excel(self):
return "已关闭"
推荐阅读
-
python基础知识(安装、数据类型、list列表、字典、函数、类、继承、文件操作)
-
python基础教程之对象和类的实际运用
-
python基础编程——类和实例
-
【java基础】面试常见问题:类和对象,封装继承多态,final关键字,static关键字,类加载过程,双亲委派模型
-
python基础知识(安装、数据类型、list列表、字典、函数、类、继承、文件操作)
-
Java基础知识(三)面向对象、类和对象、封装继承多态、构造方法、内部类、包装类
-
c++基础-继承与派生,定义基类person和公有派生类student
-
Python基础 - 20210525 -基础12 类和继承
-
打基础一定要吃透这12类 Python 内置函数
-
python基础之面对对象基础类和对象的概念