• Python之类、方法、继承


    一、类

    面向过程的语言:C语言

    谷歌:C,Python,Java,Js,Go

    1、什么是面向对象?

    所谓的面向对象,其实是指:站在上帝的视角下,世界万物一切皆对象,把拥有共同的属性归为一类,这就是class的由来

    2、类的定义:class

    类的名称首字母必须是大写的

    3、类里面有那些东西?

    A、属性

    B、方法(就是之前学习的函数)

    4、类里面的属性以及方法,调用的前提是首先要对类进行实例化处理

    object是所有类的对象,可以说是类的祖先

    类的内部的show是一个方法,self指的是类本身自己

    obj:1、它是一个变量,2、它是类的对象

    class Person(object):#创建类,类名称的首字母必须是大写,括号里面是类的基类
    def show(self):#创建类中的函数时(self)是特殊参数,必须要写
    print("hello") #函数的表达式
    obj=Person()# 把类进行实例化 
    obj.show() # 用对象调用类Person中的函数

    5、类实例化的过程中必须调用__init__方法(初始化),必须要赋值的

    构造方法:针对类初始化的时候必须要对构造方法里面的实例属性赋值

    __init__() 方法的第一个参数必须是 self

    format:格式

    class Person(object):
       def __init__(self,name,age):
          self.name=name
          self.age=age
       def show(self):
          print("my name is {0} and my age is {1}".format(self.name,self.age))
    
    obj=Person(name="wp",age=22) # 类的实例化
    obj.show()

    6、数据属性:类似于全局变量

    只能通过类名(Person)或者类的对象(obj定义的内容)调用

    # obj可以理解为类的对象,也可以将他理解为一个变量,所以obj可以简单的理解为给类定义的对象
    # 类中实例方法调用的方式:
    
    # 第一种:对象、方法,也就是类对象调用类的方法。
    obj=person(name="wp",age=22)
    name="wp",age=22是对实例属性赋值的过程,obj第一个对象。
    
    obj.name()——调用方法,调用的是name的方法。
    obj2=person(name="wt",age=22)
    name="wt",age=22是对实例属性赋值的过程,obi2第二个对象。
    obj2.name()——调用方法,调用的是name的方法
    
    #第二种:类/方法(self,参数值),此方式需要手动给 self 参数传值,也就是类名直接调用类的方法。
    obj1=person(name="wp",age=22)
    person.name(obj1)
    class Person(object):
    # 数据属性,只能通过类名或者类的对象调用
        city="西安"
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def show(self):
            print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))
    
    obj=Person(name="wp",age=22)
    obj.show()
    
    # 对数据属性而言,使用类以及类对象调用,内存地址都是一致的
    print(id(Person.city))
    print(id(obj.city))

    7、调用方法执行顺序

    1、执行构造方法

    2、执行真正调用的方法

    3、执行析构方法

    class Person(object):
       city="西安"
       def __init__(self,name,age):
          self.name=name
          self.age=age
       print("初始化")
    
       def show(self):
          print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))
    # 析构方法,价值:清理
       def __del__(self):
          print("清理")
    obj=Person(name="wp",age=22)
    obj.show()

    二、方法(method)

    1、普通方法

    如show(),info()

    class Person(object):
       def __init__(self,name,age):
          self.name=name
          self.age=age
       def show(self): #封装一个查看Person属性的函数
          print("name:{0} age:{1}".format(self.name,self.age))
    
    obj=Person(name="wp",age=22) #把类Person实例化为obj
    obj.show() #调用方法

    2、特性方法

    只具备只读属性,不能写(这个方法中不能有形式参数)

    调用特性方法的时候,没有括号

    类内部定义的以@staticmethod装饰的函数,类方法的调用关系可以通过print后的表述得知,输出结果

    # 特性方法
    class Person(object):
       def __init__(self,name,age):
          self.name=name
          self.age=age
       @property #装饰器
       def show(self):
          return "name:{0} age:{1}".format(self.name,self.age)
    
    obj=Person(name="wp",age=22) #把类Person实例化为obj
    print(obj.show) #调用方法

    3、静态参数

    理解为全局变量,但是不能等价于全局变量,静态方法的特点是使用类名来直接调用

    静态方法(staticmethod)中不能够调用实例属性

    @property装饰器

    getInfo:获取信息

    # 静态方法
    class Person(object):
    def __init__(self,name,age):
    self.name=name
    self.age=age

    @staticmethod #装饰器
    def show():
    return {"name":"wp","age":22}

    print(Person.show())

    三、继承

    1、Java与Python的继承区别

    1.1、Python是一个类可以继承N个类

    1.2、Java只能继承一个类

    2、概念

    2.1、基类(父类):被继承的类

    2.2、派生类(子类):继承其他的类

    在实战中Animal是父类,Person是子类

    子类继承父类的实例属性,两种方式:

    第一种方式:

    super().__init__(name,age)

    第一种方式:

    Animal.__init__(self,name,age)

    self.work=work

    3、父类继承子类的内容

    1、数据属性

    2、实例属性

    3、方法

    # 父辈继承子类方法
    class Animal(object):
    address="地球"

    def __init__(self,name,age):
    self.name=name
    self.age=age

    def show(self):
    return "name:{0},age:{1}".format(self.name,self.age)

    class Person(Animal):
    def __init__(self,name,age,work):
    Animal.__init__(self,name,age)
    self.work=work

    def show(self):
    print("person中的方法")

    obj=Person(name="wp",age=22,work="测试")
    obj.show()# 类B中本来是没有这个方法的,但是它继承了A类,所以可以直接调用A类中的方法

    4、继承的原则

    1、从左到右

    2、从下到上

    前提条件:子类重写了父类的方法,那么调用父类以及子类共同拥有的方法的时候,优先调用子类自己的方法

    5、方法重写

    当父类的方法没有办法满足子类的需求的时候,那么子类就会重写了父类的方法

    # 父辈信息
    class
    Animal(object): address="地球" def __init__(self,name,age): self.name=name self.age=age def show(self): return "name:{0},age:{1}".format(self.name,self.age)
    # 子辈信息
    class Person(Animal): def __init__(self,name,age,work): Animal.__init__(self,name,age) self.work=work def info(self): print("来自:{0},信息:{1}".format(self.address,self.show())) def show(self): print("person中的方法") obj=Person(name="wp",age=22,work="测试") obj.show()

    错误的继承方式

    父类与子类在调用时,不可以同时出现在同一方法中,否则会报错

  • 相关阅读:
    ThreadLocal总结
    zookeeper学习笔记
    安装solr
    VirtualBox安装Centos7
    Solr学习
    Redis缓存会出现的问题?
    面试题目总结
    mysql分库分表
    Java内存模型
    HashMap在多线程中循环链表问题(jdk1.7)
  • 原文地址:https://www.cnblogs.com/Kaylee/p/16089065.html
Copyright © 2020-2023  润新知