1、C#、Java :只能用面向对象编程

Ruby、Python :函数编程+ 面向对象

面向对象编程不是在所有地方都比函数式编程方便的,类是为了封装,下面是简单的使用方法

在创建类的时候要用class再加上一个类名,然后加上方法,调用类里面的方法必须先实例化一个类,然后使用事例去执行类里面的方法。

每次实例化的时候其实都是如图上一样,先在内存里面开辟一块空间,然后这个实例有一个类内存指针,告诉自己是由那个类创建的

2、在执行类的方法的时候,Python内部会将实例会作为self参数传进去,如下面代码

class Boo():
def ab(self,arg):
print(arg,self)
def cd(self,arg2):
print(arg2) obj1=Boo()
obj1.ab('1')#通过obj1调用这个方法,boj1会先去类里面寻找这个方法再执行,但是这个类需要两个参数,obj1会作为第一个self参数传进去
print(obj1)

  结果如下图

面向对象有一个重要功能是封装,如下面代码

class Boo():
def ab(self):
print(self.arg)#这里arg是类本身的一个属性
def cd(self):
print(self.arg) obj1=Boo()
obj1.arg= '1'#把方法封装进去,以后类的方法里面只要调用self.org就可以调用这个值了
obj1.ab()
obj1.cd()
#执行结果就是打印了两个1

  上面是一种封装方式,但是是非主流的,我们也可以在类里面进行封装操作,

class Boo():
def __init__(self,age):#这个init函数在实例类的时候会自动执行,叫构造方法,self指的是具体的实例
self.name = 'Jay'#实例的时候name和age属性会被封装进具体实例
self.age = age #age这个属性是根据我们实例化时候传进的参数决定的
def abc(self):
print(self) obj1 = Boo('33')#实际是初始化 print(obj1.age,obj1.name)#打印出这两个属性

  其实在解析器在内存里面销毁这个对象的时候会默认自动执行一个__del__方法,叫析构方法,这在其他语言也适用

  初始化类之后,我们也可以通过反射查找类里面的属性和方法

class god:
def __init__(self,name):
self.name =name
def shit(self):
print('shit')
def she(self):
print('黄赌毒')
obj = god('Jay')
r1=hasattr(obj,'shit')#查找对象里面是否含有该方法或者属性
r2=hasattr(obj,'name')
r3 = hasattr(obj,'age')
print(r1,r2,r3)

  执行结果是True True False

Python面向对象之什么是类(1)的更多相关文章

  1. Python面向对象篇之元类,附Django Model核心原理

    关于元类,我写过一篇,如果你只是了解元类,看下面这一篇就足够了. Python面向对象之类的方法和属性 本篇是深度解剖,如果你觉得元类用不到,呵呵,那是因为你不了解Django. 在Python中有一 ...

  2. python 面向对象之封装与类与对象

    封装 一,引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,小老虎一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装='隐藏',这种理解是相当片面的 二,先看如何隐藏 在 ...

  3. 【转】python面向对象中的元类

    type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello.py模块: class Hel ...

  4. python 面向对象进阶之元类metaclass

    一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为local ...

  5. python面向对象的特点,类定义等,私有属性、公有属性、成员属性

    引子:类的对象在内存中的表示def dog(name,dog_type): def bark(d): print(d,'wang wang wang ...') data = { 'name':nam ...

  6. python面向对象高级:定制类

    Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. 比如: __str__ 与__repr____iter____getitem____call__ __str__ 与__r ...

  7. python 面向对象十二 元类

    一.类也是对象 只要使用关键字class,Python解释器在执行的时候就会创建一个对象.下面的代码段: class ObjectCreator(object): pass 将在内存中创建一个对象,名 ...

  8. Python面向对象 | 抽象类和接口类

    一.抽象类(规范的编程模式) 什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化.抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性. 为什么要有抽象类 ...

  9. 第四百一十三节,python面向对象,组合、类创建的本质、依赖注入

    组合 组合举例组合就是多个类,或者若干类联合起来完成一个任务下面举例两个类联合起来完成一个任务为了降低代码的耦合度,我们一般不会在一个类里实例化另外一个类,都是将一个类在外面实例化后传参到另外一个来这 ...

随机推荐

  1. adc verilog spi 时序

    我用的是adc081sd芯片,(由于我们使用的是FPGA不用像单片机那样考虑极性cpol,相位cpha,下面仅仅介绍下跟单片机比较下) 什么是cpol:若cs被拉为低电平时sclk(时钟)是高那么cp ...

  2. MySQL常用命令总结1

    默认已成功安装并配置MySQL,以下命令全部在CMD命令行窗口(Win10平台)中进行输入: mysql -uusername -ppassword //登录MySQL MYSQL -V //查看My ...

  3. 【洛谷2519】[HAOI2011] problem a(动态规划)

    点此看题面 大致题意: 一次考试共有\(n\)个人参加,第\(i\)个人说有\(a_i\)个人分数比他高,\(b_i\)个人分数比他低.求最少有几个人说谎. 动态规划 刚看完题目可以说是一头雾水. 仔 ...

  4. mac 下删除非空文件夹

    Linux中rmdir命令是用来删除空的目录.使用方式: rmdir [-p] dirName 参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除. 举例说明:rmdir folde ...

  5. Drupal忘记管理员密码

    第一步:登陆录到phpmyadmin(通用的mysql数据库管理工具),进入phpmyadmin后,找到与drupal7相关联数据库并在数据库中找到一张名为“users”的表,然后选择浏览. 第二步: ...

  6. 微信小程序页面跳转绑定点击事件

    https://www.cnblogs.com/mrszhou/p/7931747.html

  7. 基础篇(2):c++顺序结构程序设计

    一个程序最基本的结构莫过于3种:顺序,选择,循环.这篇讲讲顺序结构. c++语言的运算符与表达式数量之多,在高级语言中是少见的,也使得它的语言功能十分完善. c++的运算符有单目与双目之分(作用于一个 ...

  8. 【python学习】新手基础程序练习(二)

    Ι 继续上一节得内容,这里主要是对各种知识的理解以及如何运用. 一.执行 Python 脚本的两种方式 1.把python执行文件加到计算机的环境变量中,然后新建文件把程序写在新文件里,再通过cmd命 ...

  9. 自定义token,保存到客户端的cookie中,

    自定义token #原理自定义token,放入cookie中,不用存数据库 #token定义方式 >>>>> "加密字符串"|登陆用户id|用户登陆时 ...

  10. Linux命令之----tree

    命令简介 tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容,包括所有文件.子目录及子目录里的目录和文件. 命令格式 tree [option] [directory]tree ...