Class 类
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
一个人(身高:一米八)要吃饭、喝水、睡觉;
一只老虎(体重:300斤)要奔跑、洗澡、捕猎。
一、名词定义
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 方法: 类中定义的 函数 。
- 类变量: 类变量在整个实例化的对象中是公用的。
- 一般位置 :类变量定义在类中且在函数体之外。
- 固有属性由类变量表示。
- 类变量通常不作为实例变量使用。
- 对类变量的修改会影响到类的所有实例。
- 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 实例变量:
- 一般位置 :在类的
__init__
声明中。 - 属性 是用变量来表示的,这种变量就称为实例变量,且一般是自定义属性。
- 一般位置 :在类的
- 局部变量:
- 一般位置 :定义在方法中的变量。
- 只作用于当前实例(对象)的类。
- 一旦函数或方法执行完毕,局部变量就会被销毁。
- 局部变量与类本身无关,无论是在类的内部还是外部定义的方法中,都可以有局部变量。
- 继承: 即一个派生类(derived class)继承基类(base class)的属性和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
- 实例化: 创建一个类的实例,即创建一个类的具体对象。
- 实例是可以更改、删除原属性的。
- 对象: 通过类定义的数据结构实例,实例即对象。对象包括两个数据成员(类变量和实例变量)和方法。
二、先睹为快
通俗举例:
#通俗举例:
定义一个人(男性)要吃饭、喝水、睡觉;
现在有个具体的人,他被赋予上述定义,所以他便是男人,会吃饭,会喝水,会睡觉。
#类名:一个人
#属性:男性
#方法:吃饭、喝水、睡觉
#对象:这个具体的人(赋予这个人相同的属性、方法的过程叫“实例化”)
-
无
__init__
代码举例(有__init__
的后面会写):class Calculator: # Calculator:类名 name = 'Good calculator' # name:类变量(固有属性) price= 18 # price:类变量(固有属性) def add(self,x, y): # add():方法 result=x+y # result:局部变量 print(result) def minus(self, x, y): # minus():方法 result=x-y # result:局部变量 print(result) def times(self, x, y): # times():方法 print(x*y) def divide(self, x, y): # divide():方法 print(x/y) cal1 = Calculator() # ☆实例化(cal1也有了相同的属性和方法) ———————————————————————————————————————————————————————————————————————————————————————————— >>> cal1.name ----->'Good calculator' >>> cal1.add(1,2) ----->3 >>> cal1.price ----->18 >>> cal1.price=25 >>> cal1.price ----->25 # 实例的属性可以修改
三、详细解释
(1)self
-
在用 def 定义方法时,第一个参数一定得是 self 。
-
self 代表的是类的实例(对象),本质是代表当前对象的地址,不是类;而 self.class 则指向类。
请看 VCR :
class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt() ———————————————————————————————————————————————————————————————————————————————————————————— #输出结果为(两个 print 的结果): <__main__.Test instance at 0x100771878> __main__.Test
-
self 不是 python 关键字,可以把它换成别的单词,但仍强烈建议使用 self。
(2)方法
- 在类的内部,使用 def 关键字来定义一个方法。
- 与一般函数不同,类的方法在定义时必须包含参数 self,且为第一个参数,self 代表的是类的实例。
- self 不是 python 的关键字,所以可以用别的单词来代替 self 。
但按照惯例,最好就用 self 。
def add(self,x,y) # add即为方法名,x和y为调用该函数需要输入的参数
result=x+y
__init__
一种内置的方法,可称之为“构造方法”,初始化(Initialize的缩写)
前后各两个下划线
在实例化时,会自动调用,用来初始化自定义属性
-
有
__init__
代码举例(没给出默认自定义属性,实例化时需要手动给出):下方代码要注意一点,自定义属性是 hight 这些,不是 hig 这些,hig 只是输入参数。
class Calculator: # Calculator:类名 class_variable = "I am a class variable" # 这是一个类变量(固有属性) name = 'Good calculator' # name:类变量(固有属性) price= 18 # price:类变量(固有属性) #*****************************