面对对象编程--类继承
Posted chrislina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面对对象编程--类继承相关的知识,希望对你有一定的参考价值。
类(Class): 用来描述具有相同的属性和方法的对象的集合。
对象,实例:通过类实例化出来的东西
属性:类里面的变量
方法:类里面的方法
实例方法:正常定义的带self函数都是实例方法
类方法:
1、不实例化,直接用类名调用
2、它可以使用类变量,cls.xxx
3、实例也可以直接通过self.xx来使用类方法
4、类方法里面它是不能用这些实例方法和实例变量
静态方法:
就是一个普通的函数,只是定义在类里面而已。
#用不了实例方法、用不了实例变量、也用不了类方法、类变量
#也不需要实例化,直接类名调用即可。
属性方法:
看起来像变量的一个函数。
1、实例方法
2、它不能有入参
3、用它的时候,直接m.func,把它当做一个变量用就ok了,不需要加括号调用
4、它是获取函数的返回值
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修饰 # 1、不实例化,直接用类名调用 # 2、它可以使用类变量,cls.xxx # 3、实例也可以直接通过self.xx来使用类方法 # 4、类方法里面它是不能用这些实例方法和实例变量 @staticmethod def run(): print(‘静态函数‘)#直接类名调用就可以 @property #属性函数,属于实例方法,无入参,调用时不用加括号 def red_bag(self): return 100
继承
目的是简化代码,减少重复代码
修改父类的方法,重写,在修改父类方法的基础上先调用下父类的方法 super().__init__(ip,port)
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)
以上是关于面对对象编程--类继承的主要内容,如果未能解决你的问题,请参考以下文章