文章目录

  • 关联关系
  • 继承关系
  • 类装饰器
  • 多态
  • 单例模式

关联关系

知识点:
1.has a
一个类中使用了另一个自定义的类型
student使用了computer book
2.类型
系统类型:
str int float
list dict tuple set
自定义类型:
算是自定义的类,将其当成一种自定义的类型
s=Student()
s是Stuent类型对象

class Computer:def __init__(self,brand,type,color):self.brand=brandself.type=typeself.color=colordef online(self):print("正在使用电脑上网..")def __str__(self):return self.brand+"---"+self.type+'----'+self.color
class Book:def __init__(self,bname,author,number):self.bname=bnameself.author=authorself.number=numberdef __str__(self):return self.bname+'-----'+self.author+'----'+str(self.number)class Student:def __init__(self,name,computer,book):self.name=nameself.computer=computerself.books=[]self.books.append(book)def borrow_book(self,book):  #借书,传进来的book是一个对象for book1 in self.books:if book1.bname==book.bname:print("已经借过这本书了")breakelse:#将参数book添加到列表self.books.append(book)print("添加成功!")def show_book(self):for book in self.books: #book就是一个book对象print(book.bname)def __str__(self):return self.name+"---"+str(self.computer)+str(self.books)
#创建对象
computer=Computer('mac','mac pre 2022','白色')
book=Book('盗墓笔记','南派三叔',10)
stu=Student('luoluo',computer,book)
print(stu)
#看借了那些书
stu.show_book()
book1=Book('斗罗大陆','唐家三少',8)
stu.borrow_book(book1)
print("----------")
stu.show_book()

继承关系

继承:
Student,Employee ,Doctor–>都输入人类
相同的代码提取—》Person类

class Person:def __init__(self,name,age):self.name=nameself.age=agedef eat(self):print(self.name+"正在吃饭....")def run(self):print(self.name+"正在跑步....")
class Student(Person):def __init__(self,name,age,clazz):print("----->student的init")#如何调用父类的__init__super().__init__(name,age)  #继承父类的方法#sumper() 父类对象self.clazz=clazzdef study(self,course):print("{}正在学习{}课程".format(self.name,course))def eat(self,foods):  #父类中无参,这里有参所有警告super().eat()print(self.name+"正在吃饭。。。喜欢吃,{}".format(foods))
class Employee(Person):def __init__(self,name,age,salary,manager):super().__init__(name,age)self.salary=salaryself.manager=manager
class Doctor(Person):def __init__(self,name,age,patients):super(Doctor,self).__init__(name,age) #self是不是这个类型self.patient=patients
stu=Student('jack',18,'python2000')
stu.study('python')
stu.eat('满汉全席')
e=Employee('mike',23,10000,'king')
lists=['zhangsan','lisi','wangwu','zhaoliu']
d=Doctor('Jupyter',20,lists)

类装饰器

#在开发中看到一些私有化处理:装饰器
class Student:def __init__(self,name,age):self.name=nameself.__age=age# def setAge(self,age):#     if age>0 and age<100:#         self.__age=age#     else:#         print("不在规定的范围内")# def getAge(self):#     return self.__age@property    #类装饰器def age(self):return self.__age@age.setter  #上一个装饰器的setterdef age(self,age):if age > 0 and age < 100:self.__age=ageelse:print("不在规定的范围内")def __str__(self):return "姓名:{},年龄:{}".format(self.name,self.__age)
s=Student("peng",20)
print(s.name)
s.age=99
print(s.age) #像name一样使用了
print(s.__dir__())
#私有化赋值
# s.setAge(30)
# print(s.getAge())

多态

在python中没有严格意义的多态,简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。 多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。

#封装 继承 多态 》面向对象
#没有严格的子类
class Person:def __init__(self,name):self.name=namedef feed_pet(self,pet): #既可以接受cat,dog也可以接受tiger(非Pet)#判断obj是不是该类对象或者该类子类对象。if isinstance(pet,Pet):  #python中加一个判断,从而类似其它语言的多态print("{}喜欢养宠物{},昵称:{}".format(self.name,pet.role,pet.nickname))else:print("不是宠物类型的不要养")
class Pet:role='pet'def __init__(self,nickname,age):self.nickname=nicknameself.age=agedef show(self):print("昵称:{}年龄:{}".format(self.nickname,self.age))
class Cat(Pet):role = '猫'def cat_mouse(self):print("抓老鼠")
class Dog(Pet):role='狗'def watch_house(self):print("看家高手")
class Tiger:def eat(self):print("太可怕了")
#创建对象
cat=Cat('花花',2)
dog=Dog('小黄',4)
person=Person('小白')
person.feed_pet(cat)
print("----------")
tiger=Tiger()
person=Person('mike')
person.feed_pet(tiger) #传进去的是一个对象

单例模式

#单例模式-开发模式
# class Student:
#     pass
# s=Student()
# s1=Student() #每创建一个对象都需要一个新地址。
# s2=Student()
# print(s)
# print(s1)
# print(s2)
class Singleton:#私有化 单例的地址就存在于__instance__instance=None  #存放地址name='jack'#重写__new__def __new__(cls):print("----->__new__")if cls.__instance is None: #初始地址是空print("----->1")cls.__instance=object.__new__(cls) #创建新空间print(cls.__instance)return cls.__instanceelse:print("------>2")return cls.__instancedef show(self,n):print("--------->show",Singleton.name,n)
s=Singleton() #经过这一次,__instance的值不是None了
s1=Singleton()  #单例:多个对象同一个地址,节省内存,不是所有的类都适合单例
s.show(520)
print(s)
print(s1)

关联关系,继承关系,多态相关推荐

  1. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制

    目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...

  2. Java---面向对象编程三大特征【封装、继承、多态】及super关键字、方法重写/覆盖(不定期更新补充)---B站韩顺平老师视频总结

    文章目录 三大特征 面向对象编程-封装 封装介绍 封装的理解和好处 封装的实现步骤(三步) 封装的简单案例 封装与构造器 封装的练习 面向对象编程-继承 为什么需要继承 继承基本介绍和示意图 继承的基 ...

  3. python类的继承关系,python——类和类之间的关系(继承多态)

    1.类和类之间的关系有三种:is-a.has-a和use-a关系. is-a关系也叫继承或泛化,比如学生和人的关系.手机和电子产品的关系都属于继承关系. has-a关系通常称之为关联,比如部门和员工的 ...

  4. 类与类之间的关系:依赖关系和关联关系及继承关系中self是什么? 类里面的特殊成员...

    类与类之间的关系 ⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进行归 类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类 中存在 ...

  5. Nhibernate+SQLite 入门实例指南二 类的继承、多态关系

    昨天忘记向源代码下载了,现在补上第一章的代码:http://files.cnblogs.com/9527/QuickStart1.rar 实例二.类的继承.多态关系 在我们实际设计过程中,经常碰到类的 ...

  6. 类的继承关系,多态的体现,我的觉得题目还是有点欠缺

    ylbtech-.NET Framework: 类的继承关系,多态的体现,我的觉得题目还是有点欠缺 1.A,案例 类的继承关系,多态的体现,我的觉得题目还是有点欠缺.   1.B,解决方案 using ...

  7. python基础------类与对象之间的关系,封装、继承、多态

    类与对象.封装.继承 练习1 # 1.写一个员工类BwEmployee class BwEmployee(object): # (2)添加构造方法,包含5个形参,保存外部传入值,分别给以下实例属性赋值 ...

  8. 【JVAV】—继承、多态、抽象类

    目录 继承 背景 语法规则 protect关键字 final关键字 final修饰变量 final修饰方法 final修饰类 多态 理解多态 含义 代码实现 意义 向上转型 直接赋值时 方法传参时 方 ...

  9. python(11)—— 面向对象编程基础(对象,类,属性,封装,继承,多态)

    把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化( ...

最新文章

  1. 在各种xDSL技术中,能提供上下行信道非对称传输的是______。正确答案 B
  2. 揭秘码云:全球第二大代码托管平台的核心架构
  3. 赠书:深入理解MySQL主从原理
  4. Android开发神器:OkHttp框架源码解析
  5. SVN 报错svn: E200014: Checksum mismatch for 。。。。。
  6. spring boot mybatis 整合_MyBatis学习:MyBatis和Spring整合
  7. 160 - 51 DueList.6
  8. AndroidStudio_安卓原生开发_蓝牙扫描设备_另一种方法---Android原生开发工作笔记145
  9. restful api和普通api有什么特点_Django REST Framework教程(1): 什么是序列化和RESTful的API
  10. 140:Bandwidth
  11. web后端本地开发(同步线上)环境搭建
  12. 如何用Mac 自带的 Automator 进行图片格式转换?
  13. 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
  14. java零基础Ⅲ-- 8.算法优化体验课-骑士周游问题
  15. 连点器安卓手机版_【百度识图器安卓下载】百度识图器官方app下载 v3.6.0 手机版...
  16. c语言地址符作用,理解C语言取地址符
  17. 许三多买了中石油--暴笑股民语录许三多
  18. Guava学习之Splitter
  19. Augustus操作指南
  20. 二、final和static关键字,接口和抽象类

热门文章

  1. 北邮博导孙松林:5G 新物种开启新时代
  2. 2014春江苏省计算机二级vb笔试考试真题详细讲解,2013春江苏省计算机二级VB笔试考试真题...
  3. 一个策划总监的自白:到底什么是策划?
  4. ceph s3 rgw配置
  5. c4droid语言实现窗口,【分享C4droid代码】真正的随机
  6. c4droid语言实现窗口,【图片】[c4droid源码]一个简单的计算器源码_c4droid吧_百度贴吧...
  7. 网络三大参数(IP、NETMASK、PORT)简述
  8. 无线传感网课后习题(书本名称无线传感器网络基础 : 理论和实践 : Fundamentals of wireless sensor networks : theory and practice)
  9. Image To PDF or XPS V5.0 汉化版,tek2y原创汉化!
  10. PerformanceTest, monitoring command