zoukankan      html  css  js  c++  java
  • 22 练习题:面向对象的命名空间 组合

    # 第一大题 : 读程序,标出程序的执行过程,画出内存图解,说明答案和为什么
    # 请不要想当然,执行之后检查结果然后再确认和自己的猜想是不是一致
    # (1)
    class A:
        Country = '中国'     # 静态变量/静态属性 存储在类的命名空间里的
        def __init__(self,name,age,country):  # 绑定方法 存储在类的命名空间里的
            self.name = name
            self.age = age
        def func1(self):
            print(self)
    
    a = A('alex',83,'印度')
    b = A('wusir',74,'泰国')
    A.Country = '英国'
    a.Country = '日本'
    print(a.Country)
    print(b.Country)
    print(A.Country)
    # '日本'
    # '日本'
    # '英国'
    
    
    
    # (2)
    class A:
        Country = ['中国']     # 静态变量/静态属性 存储在类的命名空间里的
        def __init__(self,name,age,country):  # 绑定方法 存储在类的命名空间里的
            self.name = name
            self.age = age
        def func1(self):
            print(self)
    
    a = A('alex',83,'印度')
    b = A('wusir',74,'泰国')
    a.Country[0] = '日本'
    print(a.Country)
    print(b.Country)
    print(A.Country)
    # ['日本']
    # ['日本']
    # ['日本']
    
    
    
    # (3)
    class A:
        Country = '中国'     # 静态变量/静态属性 存储在类的命名空间里的
        def __init__(self,name,age,country):  # 绑定方法 存储在类的命名空间里的
            self.name = name
            self.age = age
            self.Country = country
        def func1(self):
            print(self)
    
    a = A('alex',83,'印度')
    b = A('wusir',74,'泰国')
    A.Country = '英国'
    a.Country = '日本'
    print(a.Country)
    print(b.Country)
    print(A.Country)
    # '日本'
    # '泰国'
    # '英国'
    
    
    
    # (4)
    class A:
        Country = '中国'     # 静态变量/静态属性 存储在类的命名空间里的
        def __init__(self,name,age,country):  # 绑定方法 存储在类的命名空间里的
            self.name = name
            self.age = age
        def Country(self):
            return self.Country
    
    a = A('alex',83,'印度')
    b = A('wusir',74,'泰国')
    print(a.Country)
    print(a.Country())
    # <bound method A.Country of <__main__.A object at 0x000002A5FA79DDA0>>
    # <bound method A.Country of <__main__.A object at 0x000002A5FA79DDA0>>
    
    
    
    # 第二大题:基于圆形类实现一个圆环类,要求接收参数 外圆半径和内圆半径
    # 完成方法 :计算环形面积和环形周长(公式自己上网查)
    # 要求,借助组合,要求组合圆形类的对象完成需求
    from math import pi
    class Circle:
        def __init__(self, radius):
            self.radius = radius
        def Area(self):
            return pi * self.radius ** 2
        def Perimeter(self):
            return pi * 2 * self.radius
    
    class Annulus:
        def __init__(self, wrapper_radius, inner_radius):
            wrapper_radius, inner_radius = (wrapper_radius, inner_radius) 
                if wrapper_radius > inner_radius else (inner_radius, wrapper_radius)
            self.wrapper = Circle(wrapper_radius)
            self.inner = Circle(inner_radius)
        def A_Perimeter(self):
            return self.wrapper.Perimeter() + self.inner.Perimeter()
        def A_Area(self):
            return self.wrapper.Area() - self.inner.Area()
    
    
    annulus1 = Annulus(5, 10)
    print(annulus1.A_Perimeter())  # 94.24777960769379
    print(annulus1.A_Area())  # 235.61944901923448
    
  • 相关阅读:
    C语言函数名与函数指针详解
    在C语言中以编程的方式获取函数名
    Python 数据分析:Pandas 缺省值的判断
    手摸手教你如何在 Python 编码中做到小细节大优化
    如何在 Swoole 中优雅的实现 MySQL 连接池
    Python 数据分析:让你像写 Sql 语句一样,使用 Pandas 做数据分析
    Python 如何连接并操作 Aws 上 PB 级云数据仓库 Redshift
    Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比
    Protobuf 文件生成工具 Prototool 命令详解
    PHP 查看扩展信息的命令
  • 原文地址:https://www.cnblogs.com/raygor/p/13347319.html
Copyright © 2011-2022 走看看