Basic

什么是面向对象?

面向对象是一种编程范式,也是程序开发的一种方法,一般面向对象包含三个东西,数据,属性,对象

  • 类:定义一件事物的抽象特点、数据以及对数据的操作
  • 对象:基于类实例化产生的对象(实例),它会比类更加具体

什么是类、对象、实例?

  • 类:代表一类对象,可以实例化成实例
  • 对象:在Python中一切皆对象,所以在Python是不强调对象的
  • 实例:是由类实例化而来的

类和对象的区别

  • 系统给对象分配内存空间,而不会给类分配内存空间
  • 因为对象是具象的,而类是抽象的,系统不可能给抽象的东西分配空间

类如何实例化成实例的?

__init__并不是类实例化成实例时调用的第一个方法

实例化时第一个调用的方法是__new__方法,__new__方法在调用后会产生self对象,然后将self对象传递给__init__函数,__init__方法继而完成对象的初始化,所以__init__并不能算是构造函数

class Person:
    def __new__(cls, *args, **kwargs):
        pass
    def __init__(self, *args, **kwargs):
        self.args = args
        self.kwargs = kwargs

__new__方法通常不写,只有在需要改变创建实例的行为时,才会显式定义,比如单例模式

self是什么?

self是实例本身,是由实例化的过程中__new__方法基于自身类所产生出来的

为什么需要定义方法是需要写self

为什么self不需要传参数?

self参数有python解释器自动传入的,self代表的是实例的本身,通常命名为self 实例化类的时候,传递的参数列表是除了__init__方法第一个参数之外的参数支持函数所有参数变化

__init__是否是必须写的?

不是,当没显式的定义__init__就会使用使用默认的__init__方法,但是通常来说我们会通过自定义__init__方法来满足自己的程序需求

def __init__(self)
    pass

实例的唯一性

唯一是指每一个实例所指向的内存是不一样的,这就是唯一性的体现

  • 所有类都是type或者type子类的实例

results matching ""

    No results matching ""