面向对象super 练习
看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
class Foo(object):
a1 = 1 def __init__(self,num):
self.num = num
def show_data(self):
print(self.num+self.a1) obj1 = Foo(666)
obj2 = Foo(999)
print(obj1.num)
print(obj1.a1) obj1.num = 18
obj1.a1 = 99 print(obj1.num)
print(obj1.a1) print(obj2.a1)
print(obj2.num)
print(obj2.num)
print(Foo.a1)
print(obj1.a1) 结果:
666
1
18
99
1
999
999
1
99
看代码写结果,注意返回值。
class Foo(object): def f1(self):
return 999 def f2(self):
v = self.f1()
print('f2')
return v def f3(self):
print('f3')
return self.f2() def run(self):
result = self.f3()
print(result) obj = Foo()
v1 = obj.run()
print(v1) 结果
f3
f2
999
None看代码写结果
class Foo(object):
def __init__(self, num):
self.num = num v1 = [Foo for i in range(10)]
v2 = [Foo(5) for i in range(10)]
v3 = [Foo(i) for i in range(10)] print(v1)
print(v2)
print(v3) 结果
[<class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>, <class '__main__.Foo'>]
[<__main__.Foo object at 0x000002A1D906D908>, <__main__.Foo object at 0x000002A1D906D898>, <__main__.Foo object at 0x000002A1D906D860>, <__main__.Foo object at 0x000002A1D906D828>, <__main__.Foo object at 0x000002A1D906D7B8>, <__main__.Foo object at 0x000002A1D906DDD8>, <__main__.Foo object at 0x000002A1D906DE10>, <__main__.Foo object at 0x000002A1D906DE48>, <__main__.Foo object at 0x000002A1D906DE80>, <__main__.Foo object at 0x000002A1D906DEB8>]
[<__main__.Foo object at 0x000002A1D906DEF0>, <__main__.Foo object at 0x000002A1D906DF28>, <__main__.Foo object at 0x000002A1D906DF60>, <__main__.Foo object at 0x000002A1D906DF98>, <__main__.Foo object at 0x000002A1D906DFD0>, <__main__.Foo object at 0x000002A1D9073048>, <__main__.Foo object at 0x000002A1D9073080>, <__main__.Foo object at 0x000002A1D90730B8>, <__main__.Foo object at 0x000002A1D90730F0>, <__main__.Foo object at 0x000002A1D9073128>]看代码写结果
class StarkConfig(object): def __init__(self, num):
self.num = num def changelist(self, request):
print(self.num, request) config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
for item in config_obj_list:
print(item.num) 结果
1
2
3看代码写结果:
class StarkConfig(object): def __init__(self, num):
self.num = num def changelist(self, request):
print(self.num, request) config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
for item in config_obj_list:
item.changelist(666) 1 666
2 666
3 666
看代码写结果:
class Department(object):
def __init__(self,title):
self.title = title class Person(object):
def __init__(self,name,age,depart):
self.name = name
self.age = age
self.depart = depart d1 = Department('人事部')
d2 = Department('销售部') p1 = Person('武沛齐',18,d1)
p2 = Person('alex',18,d1)
p3 = Person('安安',19,d2) print(p1.name)
print(p2.age)
print(p3.depart)
print(p3.depart.title) 结果:
武沛齐
18
<__main__.Department object at 0x000001EA92C7DD68>
销售部
看代码写结果:
class Department(object):
def __init__(self,title):
self.title = title class Person(object):
def __init__(self,name,age,depart):
self.name = name
self.age = age
self.depart = depart def message(self):
msg = "我是%s,年龄%s,属于%s" %(self.name,self.age,self.depart.title)
print(msg) d1 = Department('人事部')
d2 = Department('销售部') p1 = Person('武沛齐',18,d1)
p2 = Person('alex',18,d1)
p1.message()
p2.message() 结果:
我是武沛齐,年龄18,属于人事部
我是alex,年龄18,属于人事部
看代码写结果:
class A:
def f1(self):
print('in A f1') class B(A):
def f1(self):
print('in B f1') class C(A):
def f1(self):
print('in C f1') class D(B, C):
def f1(self):
super(B, self).f1()
print('in D f1') obj = D()
obj.f1() 结果:
in C f1
in D f1
看代码写结果:
class A:
def f1(self):
print('in A f1') class B(A):
def f1(self):
super().f1()
print('in B f1') class C(A):
def f1(self):
print('in C f1') class D(B, C):
def f1(self):
super().f1()
print('in D f1') obj = D()
obj.f1() 结果:
in C f1
in B f1
in D f1
程序设计题:
运用类完成一个扑克牌类(无大小王)的小游戏:
用户需要输入用户名,以下为用户可选选项:
1. 洗牌
2. 随机抽取一张
3. 指定抽取一张
4. 从小到大排序
5. 退出 1. 洗牌:每次执行的结果顺序随机。
2. 随机抽取一张:显示结果为:太白金星您随机抽取的牌为:黑桃K
3. 指定抽取一张:
用户输入序号(1~52)
比如输入5,显示结果为:太白金星您抽取的第5张牌为:黑桃A
4. 将此牌从小到大显示出来。A -> 2 -> 3 .......-> K 提供思路:
52张牌可以放置一个容器中。
用户名,以及盛放牌的容器可以封装到对象属性中。import random
class Poker:
lst = ["A"]+[str(i) for i in range(2,11)]+["J","Q","K"] def __init__(self,name,poker_list):
self.name = name
self.poker_list = poker_list
self.scrap_card = [] def shuffle_cards(self):
"""
洗牌
:return:
"""
self.poker_list += self.scrap_card
random.shuffle(self.poker_list)
print(self.poker_list) def random_extraction(self):
"""
随机抽取一张牌
:return:
"""
x = random.choice(self.poker_list)
print(f"{self.name}您随机抽取的牌为:{x}")
self.scrap_card.append(x)
self.poker_list.remove(x) def appoint(self,num):
"""
指定一张牌
:param num:第几张牌
:return:
"""
x = self.poker_list[num - 1]
print(f"{self.name}您抽取的第{num}张牌为:{x}")
self.scrap_card.append(x)
self.poker_list.remove(x)
def Sort(self):
self.poker_list.sort(key=lambda x:self.lst.index(x[2:]))
print(self.poker_list) lst1 = ["黑桃","红桃","方片","梅花"]
lst2 = [ str(i) for i in range(2,11)]+["A","J","Q","K"] poker_list = [ i +j for i in lst1 for j in lst2] name = input("请输入姓名")
masge = """
1. 洗牌
2. 随机抽取一张
3. 指定抽取一张
4. 从小到大排序
5. 退出
"""
poker = Poker(name,poker_list)
dic = {"1":poker.shuffle_cards,"2" :poker.random_extraction,"3":poker.appoint,"4":poker.Sort,"5":exit}
while True:
ch = input(masge + "\n>>>")
if ch in dic and ch !="3":
dic[ch]()
elif ch == "3":
num = input(f"请输入一序号1~{len(poker.poker_list)}")
if num.isdecimal() and 0 < int(num) < len(poker.poker_list):
dic[ch](int(num))
else:
print("输入的序号有误!")
else:
print("请输入正确的选项!")
面向对象super 练习的更多相关文章
- JAVA面向对象-----super关键字
JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...
- [Java学习]面向对象-super关键字;final关键字
super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...
- 面向对象super内置函数(转)
super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(self): print("base in ...
- Python 面向对象 —— super 的使用(Python 2.x vs Python 3.x)
注意区分当前的 Python 版本是 2.X 还是 3.X,Python 3.X 在 super 的使用上较之 Python 2.X 有较大的变化: 1. Python 2.x class Conta ...
- python3面向对象注意事项
一.面向对象super的作用: class parent(object): def __init__(self): self.test() def test(self): print('parent- ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- 面向对象编程(十)——继承之Super关键字及内存分析
Super关键字
随机推荐
- 【java】并发执行ExecutorService的sumbit返回值的顺序问题
ArrayList<Future> fl = new ArrayList<Future>(); for (int i = 0; i < 10; i++) { Future ...
- .net2.0 Thread 多线程
序言 第1章 线程基础 System.Threading Join C#中的Thread中的ApartmentState几种状态(STA,MTA,Unknown)详解 System.Threadin ...
- 关于java实现断点续传的上传下载功能问题
在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...
- 容器适配器————stack
只能访问 stack 顶部的元素:只有在移除 stack 顶部的元素后,才能访问下方的元素. 堆栈操作 top():返回一个栈顶元素的引用,类型为 T&.如果栈为空,返回值未定义. push( ...
- https: could not reliably determine the server's fully qualified domain name, using localhost.localdomain.
1. 用记事本打开 将里面的 #ServerName localhost:80 注释去掉即可. 再执行 然后可以通过浏览器访问 http://localhost:80 ,如果页面显示 “It work ...
- Prometheus 后续杂记
在后续prometheus的使用中遇到的一些问题我会在此记录 搭建初期几个问题 rule.yml中对每条告警加上主机名? 要在告警通知中加上故障机器主机名不能从prometheus的采集监控项数据中的 ...
- EMC存储同时分配空间到两台LINUX服务器路径不一致导致双机盘符大小不一致
操作系统:Centos linux6.6 当我们从EMC存储上划分空间同时分配给两台或者多台服务器上时,有的时候会出现在服务器上所生成的磁盘路径是不一致的,这样就会导致盘符名称不一致或者是盘符对应的大 ...
- oracle 数据库优化【转载】
版权声明:本文为CSDN博主「咫尺的梦想ing」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/u01305 ...
- java中定义注解
创建 @Target({ElementType.Type}) @Retention(RetentionPolicy.RUNTIME) public @interface Fruit { String ...
- js中的 for, for in, for of foreach,filter使用
下面是对数组进行循环 var array = [ { id: , name: 'ohzri', birth: '1999.09.09', city: '湖北', salary: }, { id: , ...