面向对象编程 class

****类****
一个种类,一个模型。汽车模型

class Person: #经典类
pass

class Person2(object): #新式类
pass

****对象****
指具体的东西,模型造出来的东西叫做对象。

  self 代表的是本类对象;也就是实例化之后的值;

  self 的内存地址 与 实例化对象的内存地址 一致

  self代表的是本类对象。

  因为函数里面的变量都是局部变量,出了函数就不能用了。

  用self给对象绑定了之后,就可以self.xx随便用了


****实例****
实例和对象是一样的。


****实例化****
实例化就是造东西的这个过程。

  class Person():

  Person()  ------  # 这就是实例化


****属性****
就是变量


****方法****
就是类里面的函数

  class Person():

    def face()  ------  #这个就是方法


***继承***

  就是一个类继承另一个类的所有东西

  如 class Person1()

   class Person2(Person1)  ------  Person2 继承了 Person1;实例化 Person2后可以直接调用直接调用 Person1 里面的变量和方法


***封装***

  将多个自带功能组合成一个新的功能,供后续调用


***多态***

注:
【self】代表的是本类对象。
  因为函数里面的变量都是局部变量,出了函数就不能用了。
  用self给对象绑定了之后,就可以self.xx随便用了

【构造函数】
  def __init__():
    pass
  构造函数就是类在实例化的时候执行的函数。
  类在实例化的时候,会自动执行它

【析构函数】
  def __del__():
    pass
  实例被销毁的时候执行的。(即在运行最后一行代码后会自动执行的代码;用作于实例销毁)

*************************************************************************************************************************************************

***属性方法***
看起来像属性的一个方法。

  @property   #装饰器

  引用的时候,后面紧跟的def hhh(self) 定义的变量,调用时时不能跟(),调用的结果时函数的返回值

  前提条件:函数不能有参数


***类变量***
类变量,公共的变量,每个实例都可以用

  直接定义的变量

  class Person():

    cou ='china'  #类变量;调用方法:Person.cou

    def __init__(self):

      ......

    ......


***实例变量(成员变量)***


***实例方法***
实例化之后才可以用的。


***类方法***
  1、不用实例化就可以直接调用。
  2、它可以通过cls使用类变量
  3、它不能调用这个类里面的其他实例方法和实例变量

  class Person():

    @classmethod  ---- 紧跟其后的定义的函数就是类方法;调用方法Person.xm()

    def xm(cls):  #cls代表的就是Person
      print(cls.country)
      print('我是类方法')


***静态方法***
  #你不想实例化的时候,就可以定义成类方法
  #静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量、类方法、实例变量、实例方法

  @staticmethod

  def xh():
    print('这个是静态方法,它和一个没写在类里面的函数一样')

****************************************************************************************************************************************


私有

出了类之后,就不能用了。


***私有方法***

def __face()


***私有变量***
self.__face = 5

*************************************************************************************************************************************

注:

if __name__ == '__main__':

判断这个python是在别的地方导入的,还是直接运行的这个python文件

这句话一般是做调试的时候用的。

如果是直接运行这个python文件的时候,这句话一点用都没有


print(__name__) #当前python运行结果为 __main__
#调用的情况下打印的结果是 【所在的文件名】

猜你喜欢

转载自www.cnblogs.com/lynn-chen/p/9088639.html