今日所学内容:

1.类与类之间的关系

2.self 到底是谁?

3. 特殊成员 :

1.类与类之间的关系

在我们的世界中事物和事物之前总会有一些联系

在面向对象中,类与类之间也可以产生相关的联系

1) 依赖关系(类比于玩游戏,玩游戏必须依赖另一个东西,需要手机) 但是这种关系是很弱的,不是唯一的,我可以借助于手机,也可以借助于电脑,psp游戏机,依赖关系是类与类关系最弱的一种关系

依赖关系实际是一个对象依赖于另一个对象 ,是关系最弱的

# 写一个植物大战僵尸
# 1. 植物
# 打僵尸. 僵尸掉血
# 2. 僵尸
# 吃植物. 植物掉血
class Plant: #创建植物类
def __init__(self,name,hp,ad):
self.name=name
self.hp=hp
self.ad=ad
def gongji(self,js): #定义植物攻击的方法
js.hp-=self.ad # 计算植物攻击一次僵尸剩余的血量
print(f'{self.name}攻击了僵尸{self.ad}的血量,僵尸剩余{js.hp}的血量')
class jiangshi: # 创建僵尸类
def __init__(self,name,hp,ad):
self.name=name
self.hp=hp
self.ad=ad
def gongji(self,zw): #定义僵尸攻击方法
zw.hp=self.ad # 计算僵尸攻击一次植物剩余的血量
print(f'{self.name}攻击了植物{self.ad}的血量,植物剩余{zw.hp}的血量')
wd=Plant('豌豆射手',10,3)
tt=jiangshi('铁桶僵尸',30,3)
wd.gongji(tt) #豌豆射手攻击铁桶僵尸
tt.gongji(wd) # 铁桶僵尸攻击豌豆射手

写一个老师上课

teacher_list = [] # 准备一个列表装老师
class school: # 创建一个学校类
def __init__(self,name): # 学校的名字
self.name=name
def zhaopin(self,teacher): #学校招聘老师
teacher_list.append(teacher)
def gongzuo(self): #学校让老师工作
for t in teacher_list: #准备让每一个老师工作
t.work() class teacher: # 创建一个老师类
def __init__(self,name): # 创建老师的名字
self.name=name
def work(self): #老师工作 ,上课
print(f'{self.name}老师在上课') xx=school('老男孩') #创建一个学校
ls1=teacher('alex') #创建老师
ls2=teacher('wusir')
ls3=teacher('太白')
xx.zhaopin(ls1) # 学校招聘老师
xx.zhaopin(ls2)
xx.zhaopin(ls3)
ls1.work() #老师工作
ls2.work()
ls3.work()

 2) 关联关系  (一对一 ,一对多 ,多对多)

#男女朋友关系 (一对一)
class boy: #创建一个男孩类
def __init__(self,name,girlfriend=None):
self.name=name
def chi(self): #男孩吃
if self.girlfriend: #判断男孩有没有男朋友
print(f'我今天带着{self.gorlfriend.name}去吃饭') #女朋友的名字
else:
print('吃什么吃,滚去学习')
def movie(self): #同上
if self.girlfriend:
print(f'我今天带着{self.gorlfriend.name}去看电影')
else:
print('看什么看,滚去学习') class girl:
def __init__(self,name):
self.name=name b=boy('alex')
g=girl('志玲')
b.girlfriend=g
b.chi()
g2=gir('心如') #换了一个女朋友
b.girlfriend=g2
b.chi() # 带着新女朋友去吃饭

3) 继承关系 最硬的关系 ,我用过了就是我的

# class Base:
# def chi(self):
# print("我会吃") # # 派生类 => 子类
# class Foo(Base): # 这个类继承了Base类. Foo类是对Base的一个扩展
# def he(self):
# print("我会喝")
# f = Foo()
# f.chi()
# f.he() # class Cat: # 父类 => 基类 => 超类
# def catch_mouse(self):
# print("猫可以抓老鼠")
# class BosiCat(Cat): # 子类 => 派生类
# pass # class Foo:
# pass
#
# print(hash(Foo)) # 可哈希
# print(hash(Foo())) # 我们写好的类和创建的对象默认都是可哈希的 # 去掉可哈希
# class Foo:
# __hash__ = None # 当前类的对象不可哈希 # print(hash(Foo)) # 可哈希
# print(hash(Foo())) # TypeError: unhashable type: 'Foo' # class Foo:
# def chi(self, food):
# print("我爱吃鱼和", food)
#
# class Bar:
# def chi(self, food):
# print("我爱吃肉和", food)
#
# dic = {Foo: "鸡蛋", Bar: "香肠"}
#
# for k, v in dic.items():
# k().chi(v)

  

 

2.self 到底是谁?

  self : 谁调用的就是谁的,类型是根据调用方的对象来进行变换的

  super: 表示的是父类

3. 特殊成员 :

  __init__() #创建对象时初始化对象

  __call__() # 对象的调用 ,小括号调用的时候走这句话

  __getitem__() # 对象调用的时候默认执行 对象[ ]的时候使用

  __setitem__()# 对象调用的时候使用这句 对象[ ]=" "的时候使用

  __new__() # 开拓内存

  __enter__() # with对象的时候

  __exit__() #with对象结束的时候使用

  __hash__() # 去除 可哈希 hash()

day18 类与类之间的关系的更多相关文章

  1. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  2. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  3. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  4. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  5. UML图类,接口之间的关系

    UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)

  6. Java 中判断类和实例之间的关系

    判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 )   2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...

  7. 关于package,import,和“找不到可以加载的主类”报错之间的关系

    正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...

  8. C# 多线程 类构造函数 类方法之间的关系

    先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...

  9. java 类与类之间的关系 及uml图

    类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...

  10. 2.java面向对象类与类/类与对象之间关系详解

    继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...

随机推荐

  1. Ubuntu 追加组,用户,设置免sudo密码输入

    1,以root权限执行groupadd命令创建dev组.     sudo groupadd dev 2,用adduser命令创建bpuser用户,--ingroup指定用户加入dev组.   sud ...

  2. CentOS 7系统安装配置图解教程

    操作系统:CentOS 7.3 备注: CentOS 7.x系列只有64位系统,没有32位.生产服务器建议安装CentOS-7-x86_64-Minimal-1611.iso版本 一.安装CentOS ...

  3. c# 静态构造函数与私有构造函数共存

    在使用静态构造函数的时候应该注意几点: 1.静态构造函数既没有访问修饰符,也没有参数.因为是.NET调用的,所以像public和private等修饰符就没有意义了. 2.是在创建第一个类实例或任何静态 ...

  4. reactiveCocoa使用

    @代理 简介:使用RACSubject信号替换 控制器2的操作: <1在头文件定义一个信号: @property (nonatomic, strong) RACSubject *delegate ...

  5. appium+python+unittest+HTMLRunner编写UI自动化测试集

    简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以py ...

  6. 通过selenium控制浏览器滚动条

    目的:通过selenium控制浏览器滚动条 原理:通过 driver.execute_script()执行js代码,达到目的 driver.execute_script("window.sc ...

  7. python-MongoDB 非关系型数据库

    一 简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库.不采用关系型主要是为了获得 ...

  8. oracle坏块处理记录

    1. 执行sql:select count(distinct id) from bw_fpzxx ,报错如下: ORA-01578: ORACLE 数据块损坏 (文件号 16, 块号 195428)O ...

  9. python中sorted和.sorted 、reversed和reverse的注意点

    L=[1,2,3,4]l1=[123,123,23]if l1.sort() == L.reverse():   #这个判断式是恒等的,因为两个函数的返回值都是None(其实是无返回值)    pri ...

  10. [转载]Python使用@property装饰器--getter和setter方法变成属性

    原贴:为什么Python不需要getter和setter getter 和 setter在java中被广泛使用.一个好的java编程准则为:将所有属性设置为私有的,同时为属性写getter和sette ...