zoukankan      html  css  js  c++  java
  • 类的定义和使用

    类的定义:Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。

    类的三大核心特性:封装、继承、多态。

    封装:在类里面数据属性和行为用函数的形式封装起来,访问时直接调用,不需知道类里面具体的实现方法;封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

    示例:

    #!/usr/bin/env python
    class People(): #定义类
        def __init__(self,name,age): #构造函数,初始化类的属性
            self.name=name
            self.age=age
        def info(self): #声明一个info方法
            print("%s is %s year old"%(self.name,self.age))
    
    p=People("Peter",25) #类的实例化
    p.info()  #调用类方法
    输出:
    Peter is 25 year old
          

    继承:继承原有类的所有方法,实现代码的重用。

    继承的大致逻辑: 抽象(抽取类似或比较像的部分)==>继承(子类继承父类的方法和属性)==>派生(子类在父类的方法和属性的上添加新的方法和属性)

    示例:

    #!/usr/bin/env python
    class People():
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def info(self):
            print("%s is %s year old"%(self.name,self.age))
    class Man(People): #继承类
        def __init__(self,name,age,sex): #初始化类的属性
           super().__init__(name,age) #声明继承父类的属性
           self.sex=sex
        def man_info(self):
           print("%s is a %s"%(self.name,self.sex))
    m=Man('Peter',25,"boy")
    m.info()
    m.man_info()
    输出:
    Peter is 25 year old 
    Peter is a boy

    多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

    #!/usr/bin/env python
    class Animal():
        def __init__(self,name):
            self.name=name
        def talk(self):
            print("i'm %s"%self.name)
    class People(Animal):
        def __init__(self,name):
            self.name=name
    class Dog(Animal):
        def __init__(self,name):
            self.name=name
    P=People("human")
    P.talk()
    D=Dog("Dog")
    D.talk()
    输出:
    i'm human
    i'm Dog

    如何理解面向过程和面向对象?

        面向过程就是分析出解决问题所需要的步骤,然后通过函数把这些步骤一步一步实现,使用的时候一个个依次调用。
        优点:极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码。
        缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

        面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
        优点:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。
        缺点:可控性差,无法向面向过程的程序设计一样流水线式,不能精准的预测问题的处理流程与结果。

        面向过程的思维方式是分析综合。面向对象的思维方式是构造。

    赠人玫瑰,手有余香,如果我的文章有幸能够帮到你,麻烦帮忙点下右下角的推荐,谢谢!

    作者: imcati

    出处: https://www.cnblogs.com/imcati/>

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  • 相关阅读:
    ISSCC 2017论文导读 Session 14:ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel DVAFS CNN Processor in 28nm
    ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN
    ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
    深度学习方法(九):自然语言处理中的Attention Model注意力模型
    深度学习方法(八):自然语言处理中的Encoder-Decoder模型,基本Sequence to Sequence模型
    720P、1080P、4K是什么意思?
    《微微一笑很倾城》中肖奈大神说的平方根倒数速算法是什么鬼?三十分钟理解!
    转载为什么写技术博客对新人如此重要
    三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
  • 原文地址:https://www.cnblogs.com/imcati/p/9501640.html
Copyright © 2011-2022 走看看