python基础练习12

这篇博客主要探讨了Python编程中的面向对象特性,包括封装、继承和多态的概念,并通过填空题的形式加深理解。此外,还讨论了__new__和__init__的区别,以及类方法和静态方法的异同。最后,博主分享了对封装、继承和多态等核心概念的个人理解。
摘要由CSDN通过智能技术生成

1.⾯向对象的三⼤特征是:_______________、_______________、__________________。

2.代码补⻬:

class Dog:
    def bark(self):
        print("要不死你就是我⼤爷")


td = Dog("泰迪",5)
print(td.name)
td.set_age(3)
print(td)  #输出:我是泰迪,今年3岁
td.bark()

3.代码改错,并说明原因

class Cat:
    def __init__(self,name,age,kind='猫'):
        self.name = name
        self.__age = age
        self.kind = kind
    
    @property
    def age(self):
        return self.__age
    
    def miao():
        print("喵喵")


#以下代码不能修改
bsm = Cat('加菲猫',5)
print(bsm.name,bsm.age)
bsm.name = '⼤肥猫'
bsm.age = 6
bsm.miao()

4.以下代码输出什么

class Person:
    def __new__(cls, *args, **kwargs):
        print("new")
        return object.__new__(cls, *args, **kwargs)

    def __init__(self):
        print("构造")

    def __del__(self):
        print("del")


Person()

5.代码改正:

class Dog(object):
    def __init__(self, name):
        self.name = name

    @property
    def eat(self):
        print(" %s is eating" %self.name)


d = Dog("ChenRonghua")
d.eat()

6.代码补⻬

class Base:
    def __init__(self,a,b):
        self.a = a
        self.__b = b

    def test(self):
        print("Base:A")


class A(Base):
    def __init__(self,a,b,c):
        __________________
        self.c = c

    def test(self):
        __________

    def demo(self):
        __________


a = A(1,2,3)
a.test()  #输出:Base:A
a.demo().test()

7.魔术⽅法new和init的区别是什么?

8.类⽅法和静态⽅法的区别和联系是什么?

9.谈谈你对封装、继承和多态的理解。

答案:

1.封装、继承、多态

2.补齐后的代码如下,

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print("要不死你就是我⼤爷")

    def set_age(self, age):
        self.age = age

    def __str__(self):
        return f"我是{self.name},今年{self.age}岁"

3.代码如下,

class Cat:
    def __init__(self, name, age, kind='猫'):
        self.name = name
        self.__age = age
        self.kind = kind

    @property
    def age(self):
        return self.__age
    
    # 由于要修改__age的属性值,需要运用属性装饰器,修改如下:
    @age.setter
        def age(self, age):
            self.__age = age

    def miao():  # 缺少self参数,应该为def miao(self):
        print("喵喵")


# 以下代码不能修改
bsm = Cat('加菲猫', 5)
print(bsm.name, bsm.age)
bsm.name = '⼤肥猫'
bsm.age = 6
bsm.miao()

4.输出为:

new
构造
del

5.修正后的代码如下,

class Dog(object):
    def __init__(self, name):
        self.name = name

    # 因为name属性不是私有属性,无需使用属性装饰器
    def eat(self):
        print(" %s is eating" %self.name)


d = Dog("ChenRonghua")
d.eat()

6.补齐后的代码如下,

class Base:
    def __init__(self, a, b):
        self.a = a
        self.__b = b

    def test(self):
        print("Base:A")


class A(Base):
    def __init__(self, a, b, c):
        super().__init__(a, b)
        self.c = c

    def test(self):
        super().test()

    def demo(self):
        return self

7.参考答案:

__ new__⽤于创建⼀个对象,有返回值,而__ init__⽤于初始化对象,没有返回值。
__new__默认参数是cls,系统传递的是类名,而__init__默认参数是self,系统传递的是当前对象。

8.参考答案:

类⽅法第⼀个参数是类对象,由系统传⼊。静态⽅法可以没有参数。

9.参考答案:

封装就是无法修改其内部的代码,只提供一些公用的接口,供用户使用。
继承是一种简化代码的方式,将具有同样或类似功能的类进行调用的一种方式。
多态指的是一类事物有多种形态。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值