zoukankan      html  css  js  c++  java
  • day 23 面向对象的命名空间与组合

    创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

    而类有两种属性:态属性和动态属性

    1. 静态属性就是直接在类中定义的变量

    2.动态属性就是定义在类中的方法.

    其中类的数据属性是共享给所有对象的. 

    >>>id(egg.role)
    4341594072
    >>>id(Person.role)
    4341594072

     类的动态属性是绑定到所有的对象的。

    >>>egg.attack
    <bound method Person.attack of <__main__.Person object at 0x101285860>>
    >>>Person.attack
    <function Person.attack at 0x10127abf8> 

      def 类名:

      #__init__ 内置 初始化方法

      def __init__(self):

        self.name ='alex'

       #静态属性 --变量

       静态属性 =‘中国’  #是直接可以用类名.属性名调用的.

      #动态属性--方法(函数)

       def attack(self):pass

       def bite (self):pass

    实例化  创造对象 执行init方法

    对象 = 类名()

    print(对象.__dict__)

    软件重用的重要方式除了继承之外还有另外一种方式,即:组合

    组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

    求环的面积

    from math import pi
    class Circle:
    def __init__(self,r):
    self.r =r
    def area(self):
    return pi*(self.r**2)
    def perimeter(self):
    return 2*pi*self.r
    class Ring:
    def __init__(self,outer,inner):
    self.outer =Circle(outer)#=
    self.inner =Circle(inner)
    def area(self):
    return self.outer.area() -self.inner.area()
    def perimeter(self):
    return self.outer.perimeter() +self.inner.perimeter()

    r = Ring(10,3)
    print(r.area())
    print(r.perimeter())

     老师与生日的例题

    class Brithday:
    def __init__(self,year,month,day):
    self.year = year
    self.month =month
    self.day =day
    class Teacher:
    def __init__(self,name,sex,course,birth):
    self.name=name
    self.sex =sex
    self.course =course
    self.birth =shengri
    shengri = Brithday(1993,3,6)
    laoshi = Teacher("alex",'male',"python",shengri)
    print(shengri)
    import time
    if shengri.month== time.localtime().tm_mon and shengri.day == time.localtime().tm_mday :
    print("%s生日快乐," %(laoshi.name))
    print(time.localtime().tm_year - shengri.year )

    输出结果:

    <__main__.Brithday object at 0x020F9930>
    alex生日快乐,
    25



  • 相关阅读:
    字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
    Context Application 使用总结 MD
    RxJava RxPermissions 动态权限 简介 原理 案例 MD
    Luban 鲁班 图片压缩 MD
    FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
    组件化 得到 DDComponent JIMU 模块 插件 MD
    gradlew 命令行 build 调试 构建错误 Manifest merger failed MD
    protobuf Protocol Buffers 简介 案例 MD
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    [工具配置]requirejs 多页面,多入口js文件打包总结
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/8514632.html
Copyright © 2011-2022 走看看