类( 封装、继承、多态)

# 面向对象的三大特性   封装、继承、多态


# 一、封装

# 面向对象的封装其实就是使用构造方法将内容封装到对象中,然后通过对象直接或者self间接获取被封装的内容。

# 游戏角色任务划分

'''
1、创建三个游戏人物,分别是:

苍井井,女,18,初始战斗力1000
东尼木木,男,20,初始战斗力1800
波多多,女,19,初始战斗力2500

2、游戏场景,分别:

草丛战斗,消耗200战斗力
自我修炼,增长100战斗力
多人游戏,消耗500战斗力
'''

# 1、##################### 定义实现功能的类 #####################
class Person:
    '''初始化实例属性'''

    def __init__(self, na, gen, age, fig):
        self.name = na
        self.gender = gen
        self.age = age
        self.fight =fig

    def grassland(self):
        """注释:草丛战斗,消耗200战斗力"""

        self.fight = self.fight - 200

    def practice(self):
        """注释:自我修炼,增长100战斗力"""

        self.fight = self.fight + 200

    def incest(self):
        """注释:多人游戏,消耗500战斗力"""

        self.fight = self.fight - 500

    def detail(self):
        """注释:当前对象的详细情况"""

        temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s" % (self.name, self.gender, self.age, self.fight)
        print(temp)


# 2、##################### 开始游戏(实例化类:即根据类创建对象) #####################
cang = Person('苍井井', '女', 18, 1000)         # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800)        # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500)           # 创建波多多角色

# 3、#####################  调用实例化对象方法 #####################
cang.incest()           # 苍井空参加一次多人游戏
dong.practice()         # 东尼木木自我修炼了一次
bo.grassland()          # 波多多参加一次草丛战斗


# 4、#####################  输出当前所有人的详细情况  #####################
cang.detail()
dong.detail()
bo.detail()

# 5、#####################  再一次调用  #####################
cang.incest() #苍井空又参加一次多人游戏
dong.incest() #东尼木木也参加了一个多人游戏
bo.practice() #波多多自我修炼了一次

# 6、#####################  输出当前所有人的详细情况  #####################
cang.detail()
dong.detail()
bo.detail()

# 二、继承

# 继承即子继承父类的内容
# 多继承 按照 深度优先和广度优先
# 多继承分为经典类和新式类  当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类
# 面向对象的继承其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

class Animal:  # 经典类

    def eat(self):
        print("%s 吃 " % self.name)

    def drink(self):
        print("%s 喝 " % self.name)

    def shit(self):
        print("%s 拉 " % self.name)

    def pee(self):
        print("%s 撒 " % self.name)


class Cat(Animal):

    def __init__(self, name):
        self.name = name
        self.breed = '猫'

    def cry(self):
        print('%s 喵喵叫' % self.breed)


class Dog(Animal):

    def __init__(self, name):
        self.name = name
        self.breed = '狗'

    def cry(self):
        print('%s 汪汪叫' % self.breed)


# ######### 执行 #########

c1 = Cat('小白家的小黑猫')
c1.eat()
c1.cry()

d1 = Dog('胖子家的小瘦狗')
d1.drink()
d1.cry()

# 新式类

class Animal(object):  # 经典类

    def eat(self):
        print("%s 吃 " % self.name)

    def drink(self):
        print("%s 喝 " % self.name)

    def shit(self):
        print("%s 拉 " % self.name)

    def pee(self):
        print("%s 撒 " % self.name)


class Cat(Animal):

    def __init__(self, name):
        self.name = name
        self.breed = '猫'

    def cry(self):
        print('%s 喵喵叫' % self.breed)


class Dog(Animal):

    def __init__(self, name):
        self.name = name
        self.breed = '狗'

    def cry(self):
        print('%s 汪汪叫' % self.breed)


class Cat_Dog(Cat, Dog):

    def cry(self):
        Dog.pee(self)
        print('喵喵叫&汪汪叫')

# ######### 执行 #########

a1 = Cat_Dog('毒刘家的不猫不狗')
a1.eat()
a1.cry()

# 三、多态(鸭子类型)

class F1:
    pass

class S1(F1):

    def show(self):
        print('S1.show')

class S2(F1):

    def show(self):
        print('S2.show')

def Func(obj):
    print(obj.show())

s1_obj = S1()
Func(s1_obj)

s2_obj = S2()
Func(s2_obj)
class father(object):

    def __init__(self, name):
        self.name = name

    def talk(self):  # 父类中的方法
        print("father is talking....", self.name)


class son(father):

    def __init__(self, name, age):
        # super(son, self).__init__(name)
        father.__init__(self, name)
        self.age = age

    def walk(self):  # 在子类中定义其自身的方法
        print("son is walking....", self.age)

Son = son('luzaofa', 22)
Son.talk()
Son.walk()
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一门面向对象的编程语言,它支持封装继承多态封装是指将数据和行为封装在一个中,对外部隐藏实现细节,只保留接口。Python通过使用双下划线“__”来实现的私有属性和方法。 继承是指一个子可以继承的属性和方法,并且可以自己添加新的属性和方法。Python中使用名后面的括号指定父,子会自动继承的所有属性和方法。 多态是指同一个方法在不同的子中具有不同的实现方式。Python中的多态是通过方法重写(覆盖)实现的。子可以重写父的方法,并且可以在子中调用父的同名方法。 下面是一个简单的Python的示例,展示了封装继承多态的用法: ```python # 定义一个Animal class Animal: def __init__(self, name): self.name = name def speak(self): pass # 定义一个Dog继承Animal class Dog(Animal): def speak(self): return "Woof!" # 定义一个Cat继承Animal class Cat(Animal): def speak(self): return "Meow!" # 创建一个Dog对象和一个Cat对象 dog = Dog("Rufus") cat = Cat("Fluffy") # 调用它们的speak()方法,输出不同的结果 print(dog.speak()) # 输出:Woof! print(cat.speak()) # 输出:Meow! ``` 在这个示例中,Animal封装了一个名称属性和一个空的speak()方法,子Dog和Cat继承了Animal,并重写了speak()方法以实现多态。最后创建了一个Dog对象和一个Cat对象,分别调用它们的speak()方法,输出不同的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值