Python 面向对象特性

Python 面向对象特性



前言

面向对象有三大特性:封装、继承、多态


一、面向对象特性——封装

封装:把类中的属性或者数据,保护起来,不对外,外面不能直接调用,需要通过特定的方法访问或者赋值。

# 创建一个动物的类
# 创建一个动物的类
class animal:
    def __init__(self):  # 初始化入口 属性名称前加两个小下划线,代表这个属性只有在这个类可使用
        self.__ani_type = None   # 定义外部不能直接访问到的属性:__ani_type 
        self.__name = None		# 定义外部不能直接访问到的属性:__name

    def set_name(self, name):  # 自定义方法,赋值动物名称
        self.__name = name

    def set_type(self, ani_type):  # 自定义方法,赋值动物类型
        self.__ani_type = ani_type

    def print_info(self):  # 自定义方法,打印动物的基本信息
        print(f'动物名字:{self.__name}, 类型:{self.__ani_type}')


cat = animal()              # 实例化 一只猫
cat.set_name('小白')          # 属性被封装在类中了 只能通过方法来修改对象cat中的名称
cat.set_type('猫科动物')        # 属性被封装在类中了  只能通过方法来修改对象cat中的类型
cat.print_info()                # 调用方法 打印信息
# 输出结果:
# 动物名字:小白, 类型:猫科动物

二、面向对象特性——继承

继承:创建一个新类,并且新的类可以继承一个或者多个父类。

# 创建一个动物的类
class animal:
    def __init__(self):  # 初始化入口
        self.__ani_type = None
        self.name = None

    def set_name(self, name):  # 自定义方法,赋值动物名称
        self.name = name

    def set_type(self, ani_type):  # 自定义方法,赋值动物类型
        self.__ani_type = ani_type

    def print_info(self):  # 自定义方法,打印动物的基本信息
        print(f'动物名字:{self.name}, 类型:{self.__ani_type}')


class cat(animal): # 新类,继承了animal父类,可以重写,使用其属性
    def __init__(self):
        super().__init__()

    def print_info(self):	# 重写print_info方法,使其功能适合子类
        print(f'大家好,我的名字是:{self.name}')


cat = cat()  # 实例化 一只猫
cat.set_name('小黑')  # 子类调用父类的赋值方法
cat.set_type('猫科动物')  # 子类调用父类的赋值方法
cat.print_info()  # 调用子类中重写的print_info方法,打印出信息
# 输出结果:
# 大家好,我的名字是:小黑

三、面向对象特性——多态

多态:在继承同一个父类的情况下,多个类有一样方法名的方法,可以独立的实现独自的功能和特性

# 创建一个动物的类
class animal:
    def __init__(self):  # 初始化入口
        self.__ani_type = None
        self.name = None

    def set_name(self, name):  # 自定义方法,赋值动物名称
        self.name = name

    def set_type(self, ani_type):  # 自定义方法,赋值动物类型
        self.__ani_type = ani_type

    def print_info(self):  # 自定义方法,打印动物的基本信息
        print(f'动物名字:{self.name}, 类型:{self.__ani_type}')


class Cat(animal):
    def __init__(self):
        super().__init__()

    def print_info(self):# 跟dog类同样重写的父类的print_info方法 实现多态
        print(f'大家好,我的名字是:{self.name}, 我是小猫咪')


class Dog(animal):
    def __init__(self):
        super().__init__()

    def print_info(self):  # 跟cat类同样重写的父类的print_info方法 实现多态
        print(f'大家好,我的名字是:{self.name}, 我是小狗')


cat1 = Cat()  # 实例化 一只猫
cat1.set_name('小黑')  # 调用方法 传递参数
cat1.print_info()  # 调用方法 实现不同输出
dog1 = Dog()  # 实例化 一只猫
dog1.set_name('二哈')  # 调用方法 传递参数
dog1.print_info()  # 调用方法 实现不同输出


总结

以前学习面向对象,不认真,觉得很难,现在看起来,理解了,觉得很简单。哈哈。还是年轻不懂事,没有放心思到学习上。现在也不晚,多敲代码,多看看。加油

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值