Python学习之路-----私有属性、方法以及__del__

私有属性、方法

        私有属性只能在类的定义里面使用,不能在类的外面使用。在属性名前加两个下划线就变成了私有属性。而在面向对象编程中的一个基本原则就是:访问类的属性应该使用类提供的接口,类提供的接口一般来说要有两个方法,一个是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("程序结束!!!!")

结果:
对象空间已经回收!
程序结束!!!!

猜你喜欢

转载自blog.csdn.net/shen_chengfeng/article/details/80789157