Python之面向对象总结

来源:http://www.sh-fengwen.com 作者:家常菜谱 人气:166 发布时间:2019-12-15
摘要:一、面向对象        在语言数不胜数,虽然任何一门语言都万变不离其宗,但还是有差别的,个人感觉要想学好Python面向对象,首先要多练,毕竟熟能生巧,分享一个学习面向对象小

一、面向对象

        在语言数不胜数,虽然任何一门语言都万变不离其宗,但还是有差别的,个人感觉要想学好Python面向对象,首先要多练,毕竟熟能生巧,分享一个学习面向对象小技巧:把生活和学习结合起来,当你看到生活或程序中某些对象时,要先思考,思考她们能否设计成一个类,思考他们能设计成一个什么类,他们的共同属性,然后去验证,并不一定要把他做成程序,而是为了总结经验,这样时间长了,我们看待事情的视角就会不同,能一眼看出它的本质,然后举一反三,看出他的使用范围。学过其他语言的应该结合起来理解Python的语言结构,而不是依赖之前的,这样只会束缚你的思想,毕竟你学习的其他语言只能作为参考,而不是对它的升华,把自己的脑袋腾出来一点空白的区域,先把新的语言记住,然后慢慢消化才会真正的成长。

   1、面向过程

        Python中,类和对象都是不可或缺的,类是对象的一种抽象概念,对象是类的一种具体事例,值得一说的是,和我之前学的c++一样,Python也是用class关键词声明类的,并且调用方法相同,都是:对象+"."+方法(),但是Python中多出__init__(初始化函数)__str__等内置函数,这是我在其他语言中不曾见过的,而且if __name__=="__main__":这种主函数入口很新颖,当然也可能是我见识少,不曾见过,Python这门语言很有特点,比如它不像其他语言每行结束要加“;”其他语言的分级使用{}来实现,而Python使用缩进来实现分级,个人感觉比较喜欢缩进分级,更容易看代码,更容易纠错。

       a、优点:极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码即可

       其实面向对象很容易理解,既然是一个对象,他必然有着自己的属性,类是对象的抽象概念,他就可以声明很多拥有相似功能的对象,对象的行为(函数)也可看成是类的一种属性,如果声明了一个对象,那么这个对象就可以调用这个行为(函数),比如:美的冰箱可以看成是一个对象,他的属性是可以对食物保鲜,冷冻等,同时海尔冰箱也是一个对象,也具有保鲜冷冻的属性,这时就可以把海尔和美的看成是一个冰箱类的两个对象,这时可以声明一个**冰箱对象,他当然也具有保鲜冷冻的功能。归纳一下就是可以根据对象的属性抽象出来一个类,这时就可以用类声明对象,声明的对象也具有这种属性,也可有各种方法(函数)来实现各种功能。

       b、缺点:一套流水线或者流程就是来解决一个问题,代码就是牵一发而东莞全身

      人生的路上不可能会一帆风顺,而我们要做的就是调整好自己的心态,用最完美的姿态去面对,这样即使结果不尽如人意,但我们不会后悔,宁受苦难,不留遗憾!

   2、面向对象

       a、优点:解决程序的扩展性,对某一个对象单独修改,会立刻反应到整个体系中

       b、缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就有对象之间的交互解决问题。

   3、 类:具有相同特征的一类事物(人、狗、老虎)

   4、对象/实例:具体的某一个事物(隔壁阿花、楼下旺财)

   5、实例化:类——>对象的过程

   6、 在python中,用变量表示特征,用函数表示技能,因而具有相同特征和技能的一类事物就是‘类’,

   7、对象是则是这一类事物中具体的一个

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性
        print("person is walking...")

class 类名:
    类属性 = None
    def __init__(self,对象属性):
        self.对象属性 = 对象属性

    def 方法名(self):
        pass

实例 = 类名(10)
实例.方法名()

    8、类的两种作用:属性引用和实例化

    9、属性引用(类名.属性)

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")


print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

    10、例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征

class Person:   #定义一个人类
    role = 'person'  #人的角色属性都是人
    def __init__(self,name):
        self.name = name  # 每一个角色都有自己的昵称;

    def walk(self):  #人都可以走路,也就是有一个走路方法
        print("person is walking...")


print(Person.role)  #查看人的role属性
print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

    11、

类名
    类名.类属性
   类名.方法名

实例 = 类名(参数,参数)  #实例就是对象

实例
    实例.方法名()
   实例.对象属性

实例增加属性
实例.新的属性名 = 1000
print(实例.新的属性名)

   12、关于self

self:在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字.

对象/实例只有一种作用:属性引用

class 类名:
    def __init__(self,参数1,参数2):
        self.对象的属性1 = 参数1
        self.对象的属性2 = 参数2

    def 方法名(self):pass

    def 方法名2(self):pass

对象名 = 类名(1,2)  #对象就是实例,代表一个具体的东西
                  #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
                  #括号里传参数,参数不需要传self,其他与init中的形参一一对应
                  #结果返回一个对象
对象名.对象的属性1   #查看对象的属性,直接用 对象名.属性名 即可
对象名.方法名()     #调用类中的方法,直接用 对象名.方法名() 即可

dir(类) #返回类中的所有名字列表
isinstance(对象,类) #判断对象是否为类的实例
print(Person.__dict__) # 返回一个字典 key是属性名,value是属性值
print(Person.__module__)  #person类所在的模块
print(Person.__name__,type(Person.__name__)) #字符串数据类型的类名

     13、类命名空间与对象、实例的命名空间

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

           b、而类有两种属性:静态属性和动态属性

  •  静态属性就是直接在类中定义的变量
  • 动态属性就是定义在类中的方法

创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

面相对象的组合用法:

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

列子:

图片 1图片 2

from  math  import pi
class Circular:
    def __init__(self,radius):
        self.radius=radius
    def area(self):
        return self.radius **2 * pi
    def perimeter(self):
        return 2 * self.radius * pi
circu=Circular(10)
print(circu.area())
print(circu.perimeter())

圆的周长与面积

     14、面向对象的三大特征

           a、继承

class Animal:      #父类  基类  超类
    def __init__(self,name,life_value,aggr):
        self.name = name
        self.life_value = life_value
        self.aggr = aggr


class Person(Animal):  #子类  派生类
    pass

class Dog(Animal): #子类  派生类
    pass

egg = Person('egon',1000,50)
print(egg.name)
print(egg.aggr

       

python2
class Dad:  #经典类
class Dag(object)  #新式类

python3
class Dad  ==  class Dag(object) #新式类

              1、继承的语法

 class 类名(父类名):
      想在子类中实现调用父类的方法
      在类内 ——super(子类名,self).方法名()
      在类外面 ——super(子类名,对象名).方法名()
      如果不指定继承的父类,默认继承object
      子类可以使用父类的所有属性和方法
      如果子类有自己的方法就执行自己的的
      如果是子类没有的方法就执行父类的
      如果子类父类都没有这个方法就报错

继承、抽象、派生
继承 是从大范围到小范围
抽象 小范围到大范围
派生 就是在父类的基础上又产生子类——派生类
        父类里没有的 但子类有的 ——派生方法
        派生属性
方法的重写
    父类里有的方法,在子类里重新实现

 

              2、继承的两种用途:                

                  b:继承基类的方法,并且做出自己的改变或者扩展(代码重用)***  ***

                  a:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义

本文由美高梅游戏平台网站发布于家常菜谱,转载请注明出处:Python之面向对象总结

关键词:

上一篇:搭建虚构主机步骤

下一篇:没有了

频道精选

最火资讯