1. 看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】

    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
  2. 看代码写结果,注意返回值。

    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
  3. 看代码写结果

    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>]
  4. 看代码写结果

    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
  5. 看代码写结果:

    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
  6. 看代码写结果:

    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>
    销售部
  7. 看代码写结果:

    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,属于人事部
  8. 看代码写结果:

    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
  9. 看代码写结果:

    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
  10. 程序设计题:

    运用类完成一个扑克牌类(无大小王)的小游戏:
    用户需要输入用户名,以下为用户可选选项:
    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 练习的更多相关文章

  1. JAVA面向对象-----super关键字

    JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...

  2. [Java学习]面向对象-super关键字;final关键字

    super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...

  3. 面向对象super内置函数(转)

    super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(self): print("base in ...

  4. 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 ...

  5. python3面向对象注意事项

    一.面向对象super的作用: class parent(object): def __init__(self): self.test() def test(self): print('parent- ...

  6. 尚学堂Java面试题整理

    博客分类: 经典分享   1. super()与this()的差别? - 6 -  2. 作用域public,protected,private,以及不写时的差别? - 6 -  3. 编程输出例如以 ...

  7. JAVA基础笔记10-11-12-13-14

    十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...

  8. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  9. 面向对象编程(十)——继承之Super关键字及内存分析

    Super关键字

随机推荐

  1. [转] Linux多线程编程之pthread

    转载出处:https://blog.csdn.net/skyroben/article/details/72793409 1.背景知识 Linux没有真正意义上的线程,它的实现是由进程来模拟,所以属于 ...

  2. XML 属性

    XML 属性 从 HTML,你会回忆起这个:<img src="computer.gif">."src" 属性提供有关 <img> 元素 ...

  3. [BZOJ4456][ZJOI2016]旅行者:分治+最短路

    分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...

  4. sqli-labs(35)

    0X01 构造闭合 发现不需要闭合 ?id=- union ,database(), 0X02组合拳打法

  5. centos64位编译32位程序

    test.c #include <stdio.h> int main() { printf("sizeof long is %d\n",sizeof(long)); ; ...

  6. nodejs 中 接受前端的数据请求的处理

    前台 ---->  后台 后台要接受 前台的数据,只能通过 http 但是 前台接受 后台的数据有  from   ajax    jsonp nodejs 给我们提供了模块 url 模块,可以 ...

  7. Hook基本知识

    一.什么是HOOK(钩子) Windows系统,建立在事件驱动机制上,就是整个系统都是通过消息传递实现的.hook(钩子)是一种特殊的消息处理机制,它可以监视系统或者进程中的各种事件消息,截获发往目标 ...

  8. 代码测试:unsigned char*图像数据转换成OpenCV中Mat类型

    直接使用Mat的构造函数,把指针的位置赋给下面中的data就OK了: Mat(int rows, int cols, int type, void* data, size_t step=AUTO_ST ...

  9. 九、SpringBoot集成Thymeleaf模板引擎

    Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:“赛母李府”,大部分中国人是听不出破绽的.. ...

  10. 2018-5 - 凉经 - Mozilla Firefox Ltd - 前端工程师

    北京谋智火狐信息技术有限公司(北京市东城区建国门华润大厦 17 层)过去面试的时候感觉电梯好神奇啊!一边的电梯是直达 18 层以上的,我按了 18 层准备到了再往下走一层,一个老司机和我说要做另一边的 ...