Python面向对象编程学习第三讲:类方法、静态方法、类的继承与方法重载

一、类方法、静态方法

1.  静态方法

静态方法的定义 @staticmethod装饰,参数不用self;

访问特性:不能引用或访问实例属性,可以通过类.类变量访问类属性;

调用方法:可以用类.类实例或类实例.静态方法名来调用;

本质:在类中的一个普通函数而已,使面向对象程序中函数归属于类,易于代码管理;

用法:与类相关,但不依赖或改变类与实例;创建不同的实例;把类相关工具方法放入类中;

2.  类方法

类方法的定义:@classmethod,必须提供参数cls;

访问特性:不能引用或访问实例属性;

调用方法:可以用类.类实例调用;

继承特性:继承时,传入的类变量cls是子类,而非父类;

用法: 与类相关,但不依赖或改变类与实例;工厂方法,创建类实例,完成有关预处理;在类内调用静态方法时不用硬编码类名;

作页:编写一个色子类:1.具有6个面,每个面为1种颜色;2.每种颜色代表一个数值(1-6);3.实现一个通过颜色计算两种其代表数值和的静态方法;4.实现一个类方法(gen_dice)用于产生这个类的实例;

回答:

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 11 14:43:52 2020

@author: cool girl
"""

class Dice:
    dic={"red":1,"blue":2,"yellow":3,"black":4,"white":5,"purple":6}

    def __init__(self,fir,sec,value):
        self.fir=fir
        self.sec=sec        
        self.value=value
    @staticmethod  
    def add_two(sur1,sur2):
        return Dice.dic[sur1]+Dice.dic[sur2]
    
    @classmethod   #类方法产生了一个object
    def gen_dice(cls,color1,color2):
        return cls(color1,color2,cls.add_two(color1,color2))
    def show(self):
        print(self.fir,self.sec,self.value)
        
print(Dice.add_two("red","blue"))
a=Dice.gen_dice("blue","yellow")
a.show()

二、类的继承与方法重载

3.  类的继承是面向对象编程的优点之一;

继承的特点: 减少代码和灵活定制新类;子类具有父类的属性和方法;子类不能继承父类的私有属性/方法;子类可以添加新的方法;子类可以修改父类的方法;

继承的语法:定义类时,在类名后: (继承的类名);多重继承时,括号中放多个父类名,逗号分隔开;.__base__可以查看类继承的父类名字;.__bases__可以查看类继承的父类名字;

4.  重载的语法: 直接定义和父类同名的方法;

    修改父类的方法:在重载的方法中调用父类方法,同时添加相应的业务逻辑,多重继承时如何调用父类方法;

class A:
    def foo(self):
        print('a')
class B:
    def foo(self):
        print('b')
class C(A,B):
    pass
c=C()
c.foo()
#输出结果
a
class D(B,A):
    pass
D().foo()
#输出结果
b

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值