本文中主要讲解参数
self
的作用和数据流转的知识。
self
类里面的任何方法或者说函数的第一个参数必须是self。但在创建实例的时候,没有用到这个参数,不显式得写出来。
例子
class Person:
def __init__(self, name):
self.name = name
print(self)
print(type(self))
boy = Person("xiaoming")
结果如下:
<__main__.Person object at 0x0000027509BA9898>
<class '__main__.Person'>
看下boy实例
boy
<__main__.Person at 0x27509ba9898>
image.png
总结:
- 创建实例先执行构造函数
-
self
是类Person
的实例 -
self
和boy
引用的实例对象是一样 - 创建实例的时候,实例变量作为第一个参数传给了self,所以初始化函数中的self.name就是实例的属性
- 只有实例化后,才会调动init()方法,才会有它的属性
数据流转
将类实例化,通过实例来执行类中的各种方法,应用实例的属性是最常见的操作。
class Person:
def __init__(self, name):
self.name = name
def get_name(self):
return self.name
def age(self, n):
self.age = n
def color(self, color):
print("{0} is {1}".format(self.name, color))
def get_age(self):
print("{0}age is {1}".format(self.name, self.age))
boy = Person("xiaoming")
boy.get_name()
boy.age(20)
boy.color("black")
boy.get_age()
结果:
xiaoming is black
xiaomingage is 20
总结
- 创建了实例对象
boy
,self
引用了实例对象;boy
主外,self
主内 -
self
是个实例,具有属性name
;”xiaoming”
这个具体的数据,通过初始化函数传给了self.name
- 在类Person中的其他方法中,self参数必选显式地写出来,表示承接self实例对象和它的属性
网友评论