暖色调网页设计网站,科技为了上大学上交可控核聚变,rar在线解压网站,建设公司网站哪家好“” 故事7: 小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有.
问: 既然不想让子类用, 为什么要加私有? 答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用.
大白话: ATM机为啥要设计那么繁琐, 直接…“” 故事7: 小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有.
问: 既然不想让子类用, 为什么要加私有? 答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用.
大白话: ATM机为啥要设计那么繁琐, 直接搞个大箱子, 里边放钱, 存钱就直接放进去, 取钱就直接拿多少, 何必要锁的那么严实, 留个插卡口, 键盘输入密码. 不能直接拿 要按照银行定的规矩拿 “” class Prentice():def __init__(self):self.congfu [独创煎饼果子配方]def __make_cake(self):print(f运用{self.congfu} 制作煎饼果子)def my_make_cake_method(self):self.__make_cake()class TuSun(Prentice):passif __name__ __main__:t1 TuSun()# t1.make_cake() #报错 方法私有后通过公共的访问方式调用 # t1.__make_cake() #报错t1.my_make_cake_method()“” 多态介绍: 概述: 多态是指通义事物在不同时刻(环境) 表现出的不用状态, 形态 Python: 同一个函数 接收不同的对象 达到不同的效果 实现条件: 1.要有继承关系 2, 要有方法重写 3.要有父类引用 指向 子类对象 好处: 提高代码扩展性 和 可维护性 还记开发中的应用: 父类充当函数的形参类型 这样可以接受任意的子类对象 实现 传入什么子类 就调用其对应的功能 “”
# 定义动物类 充当父类
class Animal():def speak(self):print(动物会叫)# pass # 如果多个子类的实现都不同 则直接用pass修饰即可class Dog(Animal):def speak(self):print(狗会汪汪汪的叫)class Cat(Animal):def speak(self):print(猫会喵喵喵)class Phone:def speak(self):print(手机会模仿各种声音)def print_animal(an: Animal):an.speak()if __name__ __main__:a Animal()d1 Dog()c1 Cat()p Phone()print_animal(d1)print_animal(c1)print_animal(p)
# 直观的感受父类引用指向子类对象
an : Animal Dog()“” 需求: 构建对象对战平台object_play(英雄机, 敌机) 1. 英雄一代战机战斗力60与敌军战机战斗力70对抗。英雄1代战机失败 2. 卧薪尝胆英雄二代战机战斗力80出场战胜敌军战机 3. 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗
提示: 抽象战机类 HeroFighter AdvHeroFighter敌机EnemyFighter; 构建对象战斗平台, 使用多态实现
“” class HeroFight():def power(self):return 60
class AdvHeroFight(HeroFight):def power(self):return 80
class EnemyFughter():def power(self):return 70def object_play(hero:HeroFight, enemy:EnemyFughter):if hero.power() enemy.power():print(凯旋)else:print(铩羽)if __name__ __main__:hero HeroFight()hero2 AdvHeroFight()enemy EnemyFughter()object_play(hero, enemy)object_play(hero2, enemy)“” 抽象类解释: 概述: 有抽象方法的就叫抽象类 也叫接口 抽象方法: 没有方法体的方法 就叫抽象方法 格式: class 类名: def 函数名(self): pass 作用: 抽象类一般充当父类使用 用于指定 行业规范 而具体的实现 是交由各个子类完成
需求:假设国家规定空调必须有 冷风热风左右摆风的功能 现在又格力 美的 两个厂商正产空调 请用所学 模拟此场景“”
# 创建抽象类 表示标准\
class AC:def cool_wind(self):passdef hot_wind(self):passdef swing_l_r(self):pass
class Gree(AC):def cool_wind(self):print(格力空调 制造冷风)def hot_wind(self):print(格力空调,制造热风)def swing_l_r(self):print(格力空调 左右摇摆)class Media(AC):def cool_wind(self):print(美的空调 制造冷风)def hot_wind(self):print(美的空调 制造冷风)def swing_l_r(self):print(美的空调 制造冷风)if __name__ __main__:g Gree()m Media()g.cool_wind()g.hot_wind()g.swing_l_r()m.cool_wind()m.hot_wind()m.swing_l_r()1请写出单继承与多继承的语法格式? “”
# 单继承
class 类名(父类名):重写方法
# 多继承
class 类名(父类名1,父类名2 ...):重写方法# 2什么是方法重写为什么要方法重写?方法重写是 子类继承父类后 将继承父类的方法逻辑重新编写
重写后的方法子啊父类的功能主题上 具有子类独有的功能4实操练习
- 1.创建一个Animal动物基类其中有一个run方法输出跑起来....
- 2.创建一个Horse马类继承于动物类Horse类中不仅有run()方法还有eat()方法
- 2.1run方法输出 跑起来....
- 2.2 eat 方法输出 吃东西...
# #创建父类
# class Animal(object):
# #父类方法
# def run(self):
# print(跑起来...)
#
# #创建子类 继承父类
# class Horse(Animal):
# #子类方法
# def eat(self):
# print(吃东西...)
#
#
# if __name__ __main__:
# h1 Horse()
# h1.run()
# h1.eat()
5加强练习
- 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出跑起来....
- 2。创建一个Horse马类继承于动物类Horse类中重写run方法增加打印输出迈着矫健的步伐跑起来!!同时实现eat方法, 输出 吃东西...
# #创建父类
# class Animal(object):
# #父类方法
# def run(self):
# print(跑起来...)
#
# #创建子类 继承父类
# class Horse(Animal):
# #重写run方法
# def run(self):
# print(迈着矫健的步伐跑起来!!)
# #子类方法
# def eat(self):
# print(吃东西...)
#
#
# if __name__ __main__:
# h1 Horse()
# h1.run()
# h1.eat()
6综合训练- 1.创建一个动物(Animal)的基类其中有一个run方法, 输出跑起来....
- 2.创建一个Horse马类继承于动物类Horse类中不仅有run方法还有eat方法- 2.1 run方法输出 跑起来....- 2.2 eat 方法输出 吃东西...
- 3.创建一个 SwiftHorse千里马类继承Horse类初始化init方法name属性为千里马同时针对吃东西SwiftHorse类中重写eat方法增加打印输出一天可以吃一担粮食...
#
# # 创建父类
# class Animal(object):
# # 父类方法
# def run(self):
# print(跑起来...)
#
#
# # 创建子类 继承父类
# class Horse(Animal):
# # 重写run方法
# def run(self):
# print(迈着矫健的步伐跑起来!!)
#
# # 子类方法
# def eat(self):
# print(吃东西...)
#
#
# class SwiftHorse(Horse):
# # init初始化
# def __init__(self):
# self.name 千里马
#
# # 重写eat方法
# def eat(self):
# print(f{self.name}一天可以吃一担粮食...)
#
#
# if __name__ __main__:
# h1 Horse()
# h1.run()
# h1.eat()
#
# h2 SwiftHorse()
# print(h2.name)
# h2.eat()
7综合训练定义一个Person 类,包含初始化 init 方法:实例属性: 名字, name年龄, age# 创建类
class Person():# 初始化计数器 countcount 0# init初始化参数def __init__(self, name, age):self.name nameself.age agePerson.count 1def __str__(self):return f此人的姓名为: {self.name} 年龄为: {self.age}def __del__(self):Person.count - 1
# 1. 记录由该类创建的对象的个数创建一个对象计数1删除一个对象计数-1
# count变量记录对象数
# 2. 定义一个方法可以打印当前对象的个数def print_count():print(f当前对象数: {Person.count})# 3. 定义一个方法show_info, 输出以下信息
# 这是一个 Person 类,谢谢查看!def show_info():print(f这是一个 Person 类,谢谢查看!)# 需要传对象# def show_info(self):# print(f这是一个 {self.__class__.__name__} 类,谢谢查看!)# 4. 打印对象的时候可以输出打印自己的名字和年龄
# 我的名字是 xxx, 年龄是 xxx
# 用 __str__ 魔法方法# 5. 定义一个方法 study, 输出以下信息
# 我叫 xxx, 我要好好学习def study(self):print(f我叫 {self.name} ,我要好好学习)# 6. 操作步骤
# 1. 调用show_info 方法
# 2. 创建两个对象, 打印当前对象并打印当前的对象个数
# 3. 分别使用两个对象调用study方法
# 4. 删除一个对象打印输出当前的对象个数。
if __name__ __main__:Person.show_info()p1 Person(菲菲, 17)p2 Person(波比, 18)print(p1)print(p2)Person.print_count()p1.study()p2.study()# p.show_info()# p.print_count()p2.__del__()Person.print_count()“” 构建对象对战平台object_play 1 英雄一代战机战斗力60与敌军战机战斗力70对抗。英雄1代战机失败 2 卧薪尝胆英雄二代战机战斗力80出场战胜敌军战机 3 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗 “” #
# class HeroFly():
# def fight(self):
# return 60
#
# class HeroFlyPlus(HeroFly):
# def fight(self):
# return 80
#
# class JapanFly():
# def fight(self):
# return 70
#
# def object_play(hero : HeroFly, japan : JapanFly):
# if hero.fight() japan.fight():
# print(凯旋)
# else:
# print(铩羽)
#
# if __name__ __main__:
# h1 HeroFly()
# h2 HeroFlyPlus()
# j1 JapanFly()
# object_play(h1, j1)
# object_play(h2, j1)坚持分享 共同进步 如有错误 欢迎指出