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

类(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)

原文地址:https://www.cnblogs.com/chrislina/p/9406590.html

时间: 2024-10-13 17:19:23

面对对象编程--类、继承的相关文章

javascript面对对象编程 之继承

上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承,在javascript中没有类的概念,所有不能像c#,java语言那样,直接的用类去继承类.比如现在有比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.co

跟着百度学PHP[4]OOP面对对象编程-12-抽象类

什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法.所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字“abstract”来修饰. 目录==================================== 1.声明一个抽象类,抽象方法(案例一) 2.继承一个抽象类(实例二) ======================================= 案例一 <?php abstract

js面对对象编程

说到js,很大一部分人会说我很熟悉,在日常的web开发中经常用,那么你的js代码是符合面对对象思路的吗?那你会问我面向过程的js代码有什么不好吗?我的感受是面对对象的js编码更加简洁,减少了混乱,可维护行增强,适合编写富客户端时应用. 好了,首先看看js里如何定义对象: <html> <head> <script type="text/javascript"> var obj=new Object(); obj.name='josh'; obj.ag

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

PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类. 接口正是解决每个类只能继承一个父类这个问题的 接口用什么权限,继承的那个方法也要使用什么权限. 接口的声明使用:interface 接口的继承使用:implements 目录++++++++++++++++++++++++++++++++++++++++++++ 00x1 接口的声明以及接口的引用(案例一) 00x2 如何继承多个接口(案例二) 00x3 判断某个对象是否实现了某个接口(案例三) +++++++

面对对象编程七大原则

面对对象编程七大原则: 1. OCP 全称:“Open-Closed Principle” 开放-封闭原则 说明:对扩展开放,对修改关闭. 优点:按照OCP原则设计出来的系统,降低了程序各部分之间的耦合性,其适应性.灵活性.稳定性都比较好.当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能.增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试. 如何实现“开-闭”原则 在面向对象设计中,不允许

Android 内功心法(番外)——写在设计模式前,面对对象编程基础

我写的一系列"Android 内功心法"着重讲到android中经常使用的设计模式.那么如果有些程序员刚刚接触设计模式,那就有必要确定一下自己面对对象编程的基础是否牢固了. 因为这直接关系到你阅读设计模式的速度和理解质量. 接下来我将简单介绍java中面对对象编程的一些基础知识. 1,类和修饰符 public class ClassTest{ public ClassTest{ } public void test(){ } } 其中类的定义是以"class"来决定

python接口自动化九--面对对象编程二,搭建测试环境,多线程与多进程

1.面对对象编程 1.1 基本概念 实例方法:在类里面定义的函数都是实例方法,函数内有self变量 类方法: 不可以实例化,直接用类名调用 类方法可以使用类变量,cls.xxx 实例可以通过self.xx使用类方法 类方法里面不能使用实例方法和实例变量 静态方法: 定义在类里的普通函数 用不了实例方法,实例变量,类方法,类变量 不需要实例化,直接用类名调用 ? 属性方法: 是实例方法 不能有入参 用它的时候,直接m.func,把它当做变量来使用,后面不需要加括号 它是获取函数的返回值 析构函数:

手记面对对象编程

对于面对对象的基础, 什么是面对对象的编程的思想那,就是每一个对象都有他特有的方法,和属性.那编程的思想就是,我不去管你的方法原理,比就如,吹风机,可以吹风,我就拿了吹风,不用去管他怎么能吹出风.只要知道怎么用就行! 对象的方法,知道有什么用,需要的时候拿过来用就好! 创建对象的方法! 对象字面量的创建方法比较常用! 可以看出每一次创建对象我们都需要new 一下,减少new的次数,工厂模式 工厂模式也是有俩个缺点的 每个对象都有一套自己的方法,浪费资源(虽然对于现在的计算机来说不算什么,但我们尽

16、python面对对象之类和继承

前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名一般约定为“cls",通过它来传递类的属性和方法 (不能传递实例属性和实例方法),跟实例方法的self用法相似. 2.类方法的调用 实例对象和类对象都可以调用 3.应用场景 在需要站在类的角度执行某个行为时,那么就可以定义为类方法 class Student: def __init__(self,