面对对象编程--类、继承

类(Class): 用来描述具备相同的属性和方法的对象的集合。数据库

对象,实例:经过类实例化出来的东西函数

属性:类里面的变量spa

方法:类里面的方法code

实例方法:正常定义的带self函数都是实例方法对象

类方法:
  一、不实例化,直接用类名调用
  二、它能够使用类变量,cls.xxx
  三、实例也能够直接经过self.xx来使用类方法
  四、类方法里面它是不能用这些实例方法和实例变量
静态方法:
  就是一个普通的函数,只是定义在类里面而已。
  #用不了实例方法、用不了实例变量、也用不了类方法、类变量
  #也不须要实例化,直接类名调用便可。
属性方法:
  看起来像变量的一个函数。
  一、实例方法
  二、它不能有入参
  三、用它的时候,直接m.func,把它当作一个变量用就ok了,不须要加括号调用
  四、它是获取函数的返回值blog

class Person:#类,类名大写开头,经典类,类带括号也能够
    country = 'China'
    eyes = 2
    ears = 2#类变量,不须要实例化就能够调用
    mouth = 1
    def __init__(self,name):#构造函数,实例化类的时候自动执行构造函数
        print('begin to make people')
        stu = 'nhy' #函数的局部变量,出函数不能够用
        self.name = name #属性,实例变量,成员变量,需实例化才能用

    def cry(self):#实例方法
        print(self.ears) #也能够实例化后调用类变量,如今实现化变量中找,再去类变量中找
        print('%s is wawawa,he has %s eyes'%(self.name,self.eyes))

class House(object):#带括号是新式类,没啥区别
    def save(self):
        print('能住人')
class My:
    country = 'China'  #类变量
    def __init__(self):
        print('构造函数,实例化时,会执行它')
        # self.__conn = pymongo.MongoClient(host='22.2.2.2',port=27017) #实例方法
    def __del__(self):#析构函数,当实例被销毁的时候会自动执行.程序结束,实例销毁
        # self.conn.close() #关数据库、关闭文件的时候,写在里面比较合适
        print('我是的析构函数')

    def say(self): #实例方法
        self.__cry()
        print('我是实例方法')
    def __cry(self):#前面有两个__则为私有函数,只能在类中调用,出了类就不能用了
        print('我是私有函数,只能在类中调用')

    @classmethod#装饰器,类方法
    def eat(cls):
        print(cls.country)
        print('类方法')
        # # 类方法,用classmethod修饰
        # 一、不实例化,直接用类名调用
        # 二、它能够使用类变量,cls.xxx
        # 三、实例也能够直接经过self.xx来使用类方法
        # 四、类方法里面它是不能用这些实例方法和实例变量
    @staticmethod
    def run():
        print('静态函数')#直接类名调用就能够
    @property #属性函数,属于实例方法,无入参,调用时不用加括号
    def red_bag(self):
        return 100

 

继承
继承

目的是简化代码,减小重复代码
修改父类的方法,重写,在修改父类方法的基础上先调用下父类的方法 super().__init__(ip,port)ip

class Base: #基类
    def __init__(self,ip,port):
        self.ip = ip
        self.port = port

class MongoDb(Base):
    def __init__(self,ip,port):
        # Base.__init__(self,ip,port)
        super().__init__(ip,port)#继承父类能够用super
        self.db = pymongo.MongoClient(host=self.ip, port=self.port)
    def save(self,data):

        self.db['db']['table'].insert(data)
相关文章
相关标签/搜索