Python__init__()方法、__del__()方法和self的使用

类由类名、属性、方法三部分构成。

我们知道,创建一个类对象,可以通过“对象名.属性名称”的形式添加属性,每创建一个类对象,就要添加一次属性,这种方法很麻烦。为了解决这个问题,可以在创建对象的时候就设置好属性,python里面提供了一个构造方法,这个方法名叫__init__(两个下划线开头两个下划线结尾)。当创建类的实例,系统会自动调用构造方法,实现类的初始化。

例1.1:

# 例1.1
class Dog:
    def __init__(self):
        self.color = "黄色";
    def run(self):
        print("%s的狗在跑..."%self.color)
#创建对象
dog = Dog()
#调用run方法访问color的值
dog.run()

运行结果:

Python__init__()方法、__del__()方法和self的使用_第1张图片

如果想在对象创建完成后修改默认属性的值,可以在构造方法中传入参数设置属性的值。

例1.2

#例1.2
class Dog:
    def __init__(self,newcolor):
        self.color = "黑色";
    def printColor(self):
        print("颜色为:%s"%self.color)
dog1 = Dog("黄色")
dog1.printColor()
dog2 = Dog("白色")
dog2.printColor()

运行结果:

Python__init__()方法、__del__()方法和self的使用_第2张图片

例1.3

#例1.3
class Dog:
    def __init__(self,newcolor):
        self.color = newcolor;
    def printColor(self):
        print("颜色为:%s"%self.color)
dog1 = Dog("黄色")
dog1.printColor()
dog2 = Dog("白色")
dog2.printColor()

运行结果:

Python__init__()方法、__del__()方法和self的使用_第3张图片

当需要删除对象来释放类所占用的资源的时候,就需要调用析构方法__del__()。

例1.4

#例1.4
class Dog:
    def __init__(self,newcolor):
        self.color = newcolor;
    def __del__(self):
        print("程序结束自动释放空间")
dog1 = Dog("黄色")
print(dog1.color)

运行结果:

Python__init__()方法、__del__()方法和self的使用_第4张图片

如果需要手动释放空间,用del语句可以删除对象,释放它所占用的资源

例1.5

#例1.5
class Dog:
    def __init__(self,newcolor):
        self.color = newcolor;
    def __del__(self):
        print("程序结束自动释放空间")
dog1 = Dog("黄色")
del dog1
print(dog1.color)

运行结果:

Python__init__()方法、__del__()方法和self的使用_第5张图片

在方法的定义中,第一个参数永远是self。self指的是自己,表示对象的本身,可以当做是C++里面的this指针。当某个对象调用方法的时候,Python解释器会把这个对象作为第一个参数传给self,开发者只需要传递后面的参数就可以了。

例1.6

#例1.6
class Dog:
    def __init__(self,newcolor):
        self.color = newcolor;
    def printColor(self):
        print("狗的颜色为:%s"%self.color)
dog1 = Dog("黄色")
dog1.printColor()
dog2 = Dog("白色")
dog2.printColor()

例1.6中,定义了一个Dog类,在__init__()方法中,通过参数设置color属性的初始值,然后在printColor方法中获取color的值。

第7行,程序创建了一个Dog类的对象,设置color的属性默认值为“黄色”,并让dog1指向该对象所占用的内存空间。然后dog1调用了printColor方法,默认会把dog1引用的内存地址赋值给self,这是self也指向了这一块内存空间,执行第6行打印语句会访问dog1的color属性值,所以程序输出黄色。

同理,当dog2调用printColor方法的时候,默认会把dog2传给self,self这时候指向了dog2的内存,所以程序会输出白色。

运行结果:

Python__init__()方法、__del__()方法和self的使用_第6张图片

你可能感兴趣的:(Python)