私有属性、方法
私有属性只能在类的定义里面使用,不能在类的外面使用。在属性名前加两个下划线就变成了私有属性。而在面向对象编程中的一个基本原则就是:访问类的属性应该使用类提供的接口,类提供的接口一般来说要有两个方法,一个是set()方法,用来设置类的属性,一个是get()方法,用来得到类的属性。如此一来就体现出了类的第一个基本特点:封装性。
class Dog: def __init__(self): self.__name = None self.__age = None def __str__(self): return "name:" + self.__name + "\t" + "age:" + str(self.__age) def setAge(self,age): self.__age = age def getAget(self): return self.__age def setName(self,name): self.__name = name def getName(self): return self.__name dog = Dog() dog.setAge(2) dog.setName("小黑") print("age is:",dog.getAget()) print("name is",dog.getName()) #print(dog.__age,dog.__name) 如果在此处强行输出类的私有属性会报错 print(dog) 结果: age is: 2 name is 小黑 name:小黑 age:2在__init__方法中可以使用None给属性赋一个空值,None在内存中只占一块内存。
类的私有方法的定义、使用方式和类的私有属性一样。在开发过程中类的私有方法通常是一些不需要让别人知道的方法。
__del__
当对象被销毁的时候会自动调用该方法,因此可以用来检查某个对象是否被删除了。
class Dog: def __init__(self): self.__type = "拉布拉多" def __str__(self): return "type:" + self.__type def __del__(self): print("对象空间已经回收!") dog = Dog() print(dog) print("程序结束!!!!") 结果: type:拉布拉多 程序结束!!!! 对象空间已经回收!
- 在程序完全结束后Python解释器会释放变量的空间,对象的__del__方法便会调用。
- 当使用del关键字手动删除对象时,对象的del方法会马上调用。
class Dog: def __init__(self): self.__type = "拉布拉多" def __str__(self): return "type:" + self.__type def __del__(self): print("对象空间已经回收!") dog = Dog() del dog print("程序结束!!!!") 结果: 对象空间已经回收! 程序结束!!!!