zoukankan      html  css  js  c++  java
  • 面向对象基础

    一.面向对象程序设计

      1.面向过程程序设计:

       侧重过程二字,即解决问题的步骤,先干什么,后干什么,应用场景比较固定

      2.面向对象编程:

      侧重对象二字,解决了程序的扩展性问题,对某一个对象的修改,会反应到整个体系中,比如在游戏中对一个人物特征和技能的修改,应用于需求经常变化的场景。

      3.类与对象的概念

      类:即类别种类,是一系列对象相似特征与技能的结合体

      对象:特征与技能的结合体

      现实中先有对象,然后才有类,在程序中需先定义类,然后才产生对象。

      4.类的属性

      两种属性:数据属性、函数属性

      类的数据属性是所有对象共享的,类的函数属性是绑定给对象用的

      类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数。

      类中定义的函数(没有被任何装饰器装饰的),其实主要是给对象使用的,而且是绑定到对象的,虽然所有对象指向的都是相同的功能,但是绑定到不同的对象就是不同的绑定方法

      强调:绑定到对象的方法的特殊之处在于,绑定给谁就由谁来调用,谁来调用,就会将‘谁’本身当做第一个参数传给方法,即自动传值(方法__init__也是一样的道理)

      注意:python中一切皆为对象,且python3中类与类型是一个概念,类型就是类

    二.面向对象的组合用法

      1.组合:在一个类中以另外一个类的对象作为数据属性,称为类的组合、

    class Weapon:
    #     def prick(self, obj):  # 这是该装备的主动技能,扎死对方
    #         obj.life_value -= 500  # 假设攻击力是500
    # class Person:  # 定义一个人类
    #     role = 'person'  # 人的角色属性都是人
    #     def __init__(self, name,life_value):
    #         self.name = name  # 每一个角色都有自己的昵称;
    #         self.life_value = life_value #生命值
    #         self.weapon = Weapon()  # 给角色绑定一个武器;
    # alex = Person('alex',10000)
    # egon = Person('egon',5000)
    # egon.weapon.prick(alex)
    # print(alex.life_value)
    # egon.weapon.prick(alex)
    # print(alex.life_value)

      组合例子:(圆环的面积和周长)

    from math import pi
    
    class Circle:
        '''
        定义了一个圆形类;
        提供计算面积(area)和周长(perimeter)的方法
        '''
        def __init__(self,radius):
            self.radius = radius
    
        def area(self):
             return pi * self.radius * self.radius
    
        def perimeter(self):
            return 2 * pi *self.radius
    
    
    circle =  Circle(10) #实例化一个圆
    area1 = circle.area() #计算圆面积
    per1 = circle.perimeter() #计算圆周长
    print(area1,per1) #打印圆面积和周长
    
    class Ring:
        '''
        定义了一个圆环类
        提供圆环的面积和周长的方法
        '''
        def __init__(self,radius_outside,radius_inside):
            self.outsid_circle = Circle(radius_outside)
            self.inside_circle = Circle(radius_inside)
    
        def area(self):
            return self.outsid_circle.area() - self.inside_circle.area()
    
        def perimeter(self):
            return  self.outsid_circle.perimeter() + self.inside_circle.perimeter()
    
    ring = Ring(10,5) #实例化一个环形
    print(ring.perimeter()) #计算环形的周长
    print(ring.area()) #计算环形的面积

      类的组合本质:在一个类中使用另一个类的属性和方法,当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

  • 相关阅读:
    CentOS6.5安装Scrapy
    CentOS6.5安装pip
    CentOS6.5 安装openssl
    curl不能支持https问题
    pip安装时遇到的问题集锦,持续更新!
    CentOS6.5安装python3.7
    IntelliJ IDEA 17 本地LicenseServer激活
    omnidb数据库web管理工具安装
    CentOS7安装Kubernetes1.18.1并使用flannel
    Portainer中文汉化
  • 原文地址:https://www.cnblogs.com/sxh-myblogs/p/7339964.html
Copyright © 2011-2022 走看看