面对对象编程--类继承

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)

 

















以上是关于面对对象编程--类继承的主要内容,如果未能解决你的问题,请参考以下文章

17.Python自学之路:面对过程编程之继承

python学习面对对象三大特性

跟着百度学PHP[4]OOP面对对象编程-12-对象接口技术(interface)

Python面对对象高级编程

Python面对对象高级编程

面向对象—继承