python 面向对象
一、构造函数、析构函数、私有、装饰器
class My:#定义一个类
def __init__(self):#构造函数,类在实例化的时候,会自动执行它,self本类对象 实例方法
self.client=pymongo.MogonClient(host='11xxxx',port=27017)
self.f=open('a.txt')
def __del__(self):#析构函数,这个实例在被销毁的时候执行它,内存被回收的时候才会执行,常用来写数据库连接当程序不在用的时候执行析构函数关闭数据库
self.client.close()
self.f.close()
def __cry(self):#函数名或者变量名前面加__,这个函数或者变量就是私有,私有的只能在类里面用,出了类就不可以用了,好处是防止别人在类外面调用误修改,目的为了安全
print('哇哇哇')
m=My()#实例化
m.__cry#__cry是私有函数出了类就不可以用了
del m#可以用del删除变量
@classmethod#装饰器,给函数添加新功能,不改变原来的函数
def eat(cls):#class
二、总结
面向对象
1、继承
目的就是为了简化代码,减少重复代码。
#修改父类的方法
在父类方法的基础上修改,那你就先调用一下父类的方法就ok了。
Base.__init__(self,ip,port)
super().__init__(ip,port)
2、静态方法、类方法、属性方法
#实例方法
正常定义的函数都是实例方法
self
#类方法
1、不实例化,直接用类名调用
2、它可以使用类变量,cls.xxx
3、实例也可以直接通过self.xx来使用类方法
4、类方法里面它是不能用这些实例方法和实例变量
#静态方法
就是一个普通的函数,只是定义在类里面而已。
#用不了实例方法、用不了实例变量、也用不了类方法、类变量
#也不需要实例化,直接类名调用即可。
属性方法 加@porperty
看起来像变量的一个函数。
1、实例方法
2、它不能有入参
3、用它的时候,直接m.func,把它当做一个变量用就ok了,不需要加括号调用
4、它是获取函数的返回值
3、析构函数
4、私有
继承、封装、多态