欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()

练习题

一,定义一个手机类,

  1. 定义两个实例方法,让手机具有打电话和录音的方法;
  2. 打电话的时候可以录音,也可以不录音。(方法调用其他方法,并通过参数控制是否调用)
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, 不需要你真的把数据读出来。我们练习的是定义类的思维。)

  1. 初始化传入 文件路径。
  2. 定义打开 excel 方法。
  3. 定义获取 sheet 表格方法,根据 名称获取
  4. 定义读取 sheet 表格数据的方法。 (读取需要先打开,再获取表格。)
  5. 定义关闭文件方法
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基础 python