上篇我们已经学习了python中的类,并且学习到可以通过class关键字定义类,而类的最基本特性就是它是一个名称空间,本篇将会学习类的实例化。
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传递。文章来源:https://www.toymoban.com/news/detail-645549.html
3. 学习视频地址:类的实例化、类方法文章来源地址https://www.toymoban.com/news/detail-645549.html
到了这里,关于掌握Python的X篇_37_类的实例化、类方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!