Python基础—面向对象(3)

多态

说明:调用不同子类对象相同父类方法。

步骤:
定义父类,并提供公共方法
定义子类,子类中重写父类方法
传递子类给调用者,可以看到子类执行效果不同

class 复仇者联盟():
    def method(self):   #定义父类 并提供公共方法
        print('打灭霸')

class 钢铁侠(复仇者联盟):  #子类重写父类同名的方法
    def method(self):
        print('空中作战')
class 美国队长(复仇者联盟): #子类重写父类同名的方法
    def method(self):
        print('在地面作战')

class 神盾局():
    def command(self,复仇者联盟):   #神盾局召唤哪一派系的英雄是不一定的.但是都在复联里 所以以复联做形参
        return 复仇者联盟.method()
帮派1 = 钢铁侠()
帮派2 = 美国队长()

对象 = 神盾局()
对象.command(帮派1)   #调用方法:把对象放进去
对象.command(帮派2)
空中作战
在地面作战

类属性

设置和访问类属性

class Warrior():
    god = 'Athena'
golden = Warrior()
bronze = Warrior()

#通过类访问 格式:类.类属性
print(Warrior.god)
#通过对象访问  格式:对象.类属性
print(golden.god)
Athena
Athena

修改类属性

说明:只能通过类对象来修改。

lass Warrior():
    god = 'Athena'
golden = Warrior()
bronze = Warrior()

Warrior.god = 'Harris'
print(Warrior.god)
Harris

类的调用方法

类方法

类方法特点:需要用装饰器@classmethod来标志其为类方法。

对于类方法,第一个参数必须是类对象。一般以cls作为第一个参数。

使用场景:当方法中需要使用类对象,定义类方法。

class Warrior():
    weapon = 'gold cloth'

    @classmethod   #缩进
    def gweapon(cls):
        return cls.weapon
i = Warrior()
print(i.gweapon())
gold cloth

静态方法

说明:方法中不需要使用实例方法和类方法。

class Warrior():

    @staticmethod
    def method():
        print('同样的招式只能对圣斗士使用一次')
i = Warrior()
i.method()
Warrior.method()   #类和对象都可以调用
同样的招式只能对圣斗士使用一次
同样的招式只能对圣斗士使用一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值