python_Daily practice (每日一练) 97

2.练习题2
封装 继承 多态
要求:
如何理解多继承?
答:所谓多继承,即子类有多个父类,并且具有它们的特征.

写出一个简单的多继承案例.

 #定义一个父类

 class language:
     def printlanguage(self):
         print('---language---')

 #定义一个父类

 class C++:
     def printC++(self):
         print('---C++---')

#定义一个子类,继承两个父类

 class python(language,C++):
     def printpython(self):
         print('---python---')

如果多个父类中有相同的方法,那么子类在调用的时候,挑用哪个?
答:先继承谁,就调用谁的函数.

如何理解重写?
答:所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法

下面有一个类,请重写类中的方法

 #coding=utf-8
 class Car(self):
     def run(self):
         print("奔驰在路上!")

参考代码:

 class BMW(Car):
     def run(self):
         print("奔驰在田野上!")

你是如何理解多态的?
答:一种类型,多种形态.

请解读出多态一章中python"鸭子类型"程序的运行结果.
答: S1.show
None
S2.show
None

3.练习题3
类属性 实例属性 类方法及静态方法
要求:
简述你自己对类属性的理解?
答:类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有.

请写出一个简单的类,其中包含公有属性,私有属性.

 class Car(obj):
     name = "benci"
     __money = 50000

请判断下面类中哪些是类属性,哪些是实例属性?

 class Car(obj):
     addr = "china"
     def __init__(self):
         self.name = 'changcheng'
         self.money = 100000

参考

 class Car(obj):
     addr = "china" #类属性
     def __init__(self):
         self.name = 'changcheng'#实例属性
         self.money = 100000#实例属性

如果要在类外修改类属性该怎么做?
答:必须通过类对象去引用然后进行修改.

实例属性修改的方式是什么?
答:通过实例对象去引用,并会产生一个同名的实例属性.

简述你对类方法的理解?
答:类方法是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法.

对于类方法的参数有什么要求吗?
答:对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数.

类方法可以通过哪几种方式引用?
答:可以通过实例对象,类对象来引用.

类方法的用途?
答:可以对类属性进行修改.

如何使用静态方法?
答:静态方法需要通过修饰器@staticmethod来进行修饰,不需要多定义参数.

如何在静态方法中引用类属性?
答:必须通过类对象来引用.

提示:
类方法的第一个参数是类对象cls.
实例方法的第一个参数是实例对象self.

4.练习题4
利用继承编写下面一段代码
要求:
动物:吃,喝,跑,玩
猫:喵喵叫
狗:旺旺叫
猫狗继承于动物,并且有2.3中自己的属性.

class Animal:
    def eat(self):
        print("--%seat"%self.name)
    def  drink(self):
        print(" %sdrink"%self.name)
    def run(self):
        print("%s running"%self.name)
    def play(self):
        print("%s playing"%self.name)
class Cat(Animal):
    def __init__(self, name):
        self.name = name

    def cry(self):
        print("喵喵叫")
class Dog(Animal):
    def __init__(self, name):
        self.name = name
    def cry(self):
        print("旺旺叫")

cat1 = cat('大黄猫')
cat1.eat()

cat2 = cat('花猫')
cat2.drink()

dog1 = Dog('八公')
dog1.eat()


class Animal:
    def eat(self):
        print("--%seat"%self.name)
    def  drink(self):
        print(" %sdrink"%self.name)
    def run(self):
        print("%s running"%self.name)
    def play(self):
        print("%s playing"%self.name)
class Cat(Animal):
    def __init__(self, name):
        self.name = name

    def cry(self):
        print("喵喵叫")
class Dog(Animal):
    def __init__(self, name):
        self.name = name
    def cry(self):
        print("旺旺叫")

cat1 = cat('大黄猫')
cat1.eat()

cat2 = cat('花猫')
cat2.drink()

dog1 = Dog('八公')
dog1.eat()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值