语法:
def __del__(self):
函数体
析构函数不能传参,是类的内部调运;在对象执行结束,内存被释放,销毁时执行;
实例del后将处罚运行。
3.私有方法
Python默认的成员函数和成员变量都是公开的,python的私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。
声明该方法为私有方法,不能在类的外部调用。
实例:
#Author:Anliu
class test1:
def ssh_test(self):
print("测试ssh链接是否正常")
def ssh_conn(self):
print("ssh链接设备")
admin = test1()
user1 = test1()
admin.ssh_test()
user1.ssh_test()
假设开发需求规定对与实例不能直接使用ssh_test()的成员函数,ssh_test()的存在只是类的内部判断,在ssh_conn()之前调运ssh_test()测试可链接,则调运ssh_conn()。
那么,可将ssh_conn()设置为私有方法:
#Author:Anliu
class test1:
def __ssh_test(self):
pass
print("%s测试ssh链接是否正常"%self)
flag = 1
return flag
def ssh_conn(self):
self.__ssh_test() #在类的内部可调运私有方法
print("ssh链接设备")
#t = admin.__ssh_test()
admin = test1()
user1 = test1()
#admin.__ssh_test() #将报错:AttributeError: 'test1' object has no attribute '__ssh_test'
#user1.__ssh_test()
user1.ssh_conn()
4.私有属性
如果有一个对象,当需要对其进行修改属性时,有2种方法
对象名.属性名 = 数据 ---->直接修改
对象名.方法名() ---->间接修改
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
将属性定义为私有属性
添加一个可以调用的方法,供调用。
#Author:Anliu
class user:
def __init__(self,name,money,balance):
self.name = name
self.__money = money #定义私有属性
self.balance = balance
def loggin(self):
print("%s please logging,balance is %s,money is %s"%(self.name,self.balance,self.__money))
def buy(self):
print("%s buy a shopping"%self.name)
def skan(self):
print("%s skan shopping"%self.name)
def define(self,new_money):
self.__money = new_money
user_admin = user("admin","1223","32324")
user_users = user("user","1223","32324")
user_admin.loggin()
user_users.buy()
#print(user_users.__money) #报错:AttributeError: 'user' object has no attribute '__money'
print(user_users.balance)
print(user_users.define(100000)) #可调运新的新的方法来实现私有变量的修改