设为首页 加入收藏

TOP

第十七天-面向对象03-类与类的关系(二)
2018-11-08 22:08:31 】 浏览:238
Tags:十七 面向 对象 03- 关系
un_lst = None): 3 self.title = title 4 self.content = content 5 self.author = author 6 self.time = time 7 if pinglun_lst == None: 8 self.pinglun_lst = [] 9 else: 10 self.pinglun_lst = pinglun_lst 11 12 class Pinglun: 13 def __init__(self, name, time, content, fav): 14 self.name = name 15 self.time = time 16 self.content = content 17 self.fav = fav 18 19 20 pl1 = Pinglun("UZI", "昨天1", "UZI发出祝福",1888888) 21 pl2 = Pinglun("xiaohu", "昨天2", "UZI发出祝福",1888888) 22 pl3 = Pinglun("若风", "昨天3", "UZI发出祝福",1888888) 23 pl4 = Pinglun("let me", "昨天3", "UZI发出祝福",1888888) 24 pl5 = Pinglun("长长", "昨天4", "UZI发出祝福",1888888) 25 pl6 = Pinglun("jackylove", "昨天5", "UZI发出祝福",1888888) 26 pl7 = Pinglun("mlxg", "昨天6", "UZI发出祝福",1888888) 27 pl8 = Pinglun("miss", "昨天7", "UZI发出祝福",1888888) 28 29 # 添加评论到列表 30 lst = [] 31 lst.append(pl1) 32 lst.append(pl2) 33 lst.append(pl3) 34 lst.append(pl4) 35 lst.append(pl5) 36 lst.append(pl6) 37 lst.append(pl7) 38 lst.append(pl8) 39 40 # 显示帖子的内容.评论内容 41 tie = Tie("S8_IG夺冠. 王思聪怒吃热狗. ", "IG的上单The Shy疯了一样. 一个打5个. 自己人都不放过", "王明","某年某月某一天",lst ) 42 print(tie.content) 43 44 # 评论 45 # print(tie.pinglun_lst) # 直接打印一堆内存地址 46 47 for pl in tie.pinglun_lst: # 循环去拿出每条评论 48 print(pl.content) # 打印 pl.content 评论内容

 

 

 

# 继承关系之self
'''
在面向对象的世界中存在着继承关系.现实中也存在着这样的关系.我们说过.x是一种y,那x就可以继承y.这时理解层面上的.如果
上升到代码层面.我们可认为.子类在不影响父类的程序运行的基础上对父类进行的扩充和扩展.这里.我们可把父类称为超类或者基类.子类被称为派生类.
'''
 1 # 类名和对象默认是可以作为字典的key的
 2 class Foo:
 3     def __init__(self):
 4         pass
 5 
 6     def method(self):
 7         pass
 8 
 9     # __hash__ = None  # 该类的对象就不可哈希了
10 
11 print(hash(Foo))  # 类 可hash(不可改变)的
12 print(hash(Foo())) # 对象 可hash的
13 # 可哈希 所以字典的key可以是对象或者类
14 dic = {}
15 dic[Foo] = 123
16 dic[Foo()] = 456
17 # print(dic)  # 打印如下 是可用的
18 # {<class '__main__.Foo'>: 123, <__main__.Foo object at 0x000002BC7568EBE0>: 456}
19 
20 # dic = {Foo:Foo(),Foo():"疙瘩汤"} # 可用
21 
22 # 不可哈希
23 # list   # unhashable type: 'list'  __hash__ = None
24 s = []
25 # print(hash(s))  # list不可哈希

# 所以想要谁不可哈希 可添加 __hash__ = None
# 如上面类中添加 __hash__ = None 该类的对象就不可哈希了

 

# self 谁调用就是谁的
 1 class Base:
 2     def __init__(self, num):
 3         self.num = num
 4 
 5     def func1(self):
 6         print(self.num)
 7         self.func2()
 8 
 9     def func2(self):
10         print(111, self.num)
11 
12 class Foo(Base):
13     def func2(self):
14         print(222, self.num)
15 
16 lst = [Base(1), Base(2), Foo(3)]
17 # for obj in lst:
18 #     obj.func2()   # 111,1  222,2  222,3
# self在访问方法的顺序: 永远先找自己的.自己的找不到再找父类的.

# 类名是变量(类似函数名)
 1 class Car:
 2     def run(self):
 3         print("我的车会跑")
 4 
 5 CarCarCar = Car # 类名是变量
 6 c = CarCarCar()
 7 # c.run()
 8 
 9 # 函数名是变量
10 def func():
11     print("我是函数")
12 
13 # func()
14 #
15 # fn = func
16 # fn()

 

 

# 特殊成员
# __init_()就是一个特殊的成员.带双下划线那一堆.这些方法在特殊场景会被自动执行
 1 '''
 2 1.类名() 会自动执行__init__() 
 3 2.对象() 会自动执行__call__() 
 4 3.对象[key] 会自动执行__getitem__() 
 5 4.对象[key] = value 会自动执行__setitem__() 
 6 5.del 对象[key] 会自动执行? __delitem__() 
 7 6.对象+对象 会自动执行 __add__() 
 8 7.with 对象 as 变量会自动执行__enter__ 和__exit__ 
 9 8.打印对象的时候 会自动执行 __str__ 
10 9.干掉可哈希  __hash__ == None  对象就不可哈希了.
11 10.__repr__()  def __repr__(self):  一个
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python学习 day017打卡 类与类之.. 下一篇python基础 - 控制语句

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目