掌握Python的X篇_37_类的实例化、类方法

上篇我们已经学习了python中的类,并且学习到可以通过class关键字定义类,而类的最基本特性就是它是一个名称空间,本篇将会学习类的实例化。

文章目录

  • 1. 类的实例化
    • 1.1__init__函数
    • 1.2 实例化流程
  • 2. 类方法与成员

1. 类的实例化

上篇中新定义的类,不仅可以作为名称空间使用,实际上还可以像函数那样调用

In [1]: class Dog:
   ...:     x = 5
   ...:     def fun1(arg1,arg2):
   ...:         print(arg1,arg2)
   ...:
   ...: if __name__ == "__main__":
   ...:     Dog.fun1("brothers", "666")
   ...:
brothers 666

In [2]: Dog() #实例化对象
Out[2]: <__main__.Dog at 0x213762e82b0>

以上,调用Dog()的过程,我们称作类的实例化,了解类的实例化,要先了解类和对象的关系。

简单而言,类就想是一个“模具”,而”对象”是由模具生产的各个具体的“东西"

比如,汽车厂的生产线上,有车模具,根据车的模具,可以制作出很多具体的车。
以上,模具就是”类”,具体的车,就是依照”类”生成的对象

只不过,以上的Dog类内部没有任何东西,我们需要结合一个特殊的__int__函数,才能够使得对象的实例化有意义。

1.1__init__函数

我们进一步丰富Dog类,通过定义’init’方法:

In [3]: class Dog:
   ...:     def __init__(self,arg_name,arg_age):
   ...:         self.name = arg_name
   ...:         self.age = arg_age
   ...:
   ...: if __name__ == "__main__":
   ...:     dog1 = Dog("旺财",5)
   ...:     dog2 = Dog("小强",6)
   ...:

In [4]: dog1
Out[4]: <__main__.Dog at 0x21376553670>

In [5]: dog2
Out[5]: <__main__.Dog at 0x21376553ee0>

In [6]: dog1.name
Out[6]: '旺财'

In [7]: dog2.name
Out[7]: '小强'

以上代码展示了,我们使用Dog类,实例化得到了具体的2个object(“旺财”,“小强”)

1.2 实例化流程

实际上,当我们调用’Dog’时,内部会发生以下几个事情:

  • python会创造一个空白的“object”
  • python会自动调用’init’方法,并且把以上的空白object,当作第一个参数’self’,传递给’init
  • 因为我们的’init’中包含了’self.xx = yy’这类代码,因此就完成了初始化

2. 类方法与成员

类作为特殊的名称空间,使得类中定义的函数就变得比较特殊。因此,我们以后将类中定义的函数,称为方法(method).
之所以特殊对待,是因为类方法的调用过程比较特殊。

class Dog:
    def __init__(self,arg_name,arg_age):
        self.name = arg_name
        self.age = arg_age
    
    def introduce(self):
        print("我是",self.name,"年龄",self.age)

if __name__ == "__main__":
    dog1 = Dog("旺财",5)
    dog2 = Dog("小强",6)
    dog1.introduce() #等价于dog1.introduce(dog1)
    dog2.introduce()

可以看出,类的方法调用语法:

实例化对象.<方法名>()

之所以我们没有显示传递"self"对应的实参,是因为python其实会偷偷将.之前的实例化对象,作为self传递。

3. 学习视频地址:类的实例化、类方法

你可能感兴趣的:(#,掌握Python的X篇,python,开发语言)