本篇主要是介绍python,内容可先看目录
其他基础知识详解,欢迎查看本人的其他文章
Python基础知识详解 从入门到精通(一)介绍
Python基础知识详解 从入门到精通(二)基础
Python基础知识详解 从入门到精通(三)语法与函数
Python基础知识详解 从入门到精通(四)列表、元组、字典、集合
Python基础知识详解 从入门到精通(五)模块管理
Python基础知识详解 从入门到精通(六)文件操作
PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步

定义类
注意,若类的方法与属性名一样。则属性会覆盖方法

一个类可以产生无数的对象,当对象的方法被调用时候,对象会将自身作为第一个参数作为self参数传给方法,这样子就可以分辨是哪一个变量在调用这个方法,所以定义方法时候第一个参数必定是self
关于self 不理解也没关系,每一个函数都放在第一个函数即可

__ init __(self) 是魔法方法用于传参数,使用方法如下
在类实例化开始时会自动被调用,可以用于一些开始时候需要做的事
用了__init__可以直接在生成对象时候传参数
但是注意__init__不能返回数据,它默认放回None

关于魔法方法后期文章解释

def aa():
print('dd')
class aa :
“这是类的说明” # 用类名.__doc__ 可以输出
g = 3
def jj(self):
aa() #可以调用全局函数
print(‘jjjjj’)

class bb:

#属性,,,,,,就是变量的值,,,比如鱼是红色的,多大,这些是属性
a= 1
b = ‘sssss’ #这是类属性,所有实例共有的,只要一个实例修改了它,全部实例都改变
#方法 就是类内的函数
def sename(self,name):
self.name = nema #如self.xxxx是实例属性,每个实例互不影响
def pr(self)
print(self.name)
def hhh(self):
pass
class cc:
def __init__(self,name)
self.name = name
self.pr #可以调用下面的函数
def pr(self)
print (self.name)

使用
实例名.__dict__可以查看实例的属性(字典类型)
类名.__dict__可以查看类的属性(字典类型)

以上定义中aa为类,a为实例对象
还可以直接使用类对象 如aa.g 这是类对象

为了区分函数与类
约定类大写开头,函数小写开头

如实例对象

a = aa()
a.jj()
#结果为 jjjjj
a = bb()
a.setname(‘gfx’)
a.pr()
#结果为gfx
#如cc中使用了__init__可以直接在生成对象时候传参数
a = cc(‘gfx’)
a. pr()
#结果为gfx

#实例对象可以直接加属性
#如a.hh = 8 相当于加一个hh属性
#实例对象使用时可以修改属性的值
#a.g +=3
#则a.g 结果为6

使用类对象

a = aa()
b = aa()
c = aa()
#a,b,c是不同的实例对象
#如a.g 结果为3
b.g 结果为3
a.g +=3
#则a.g 结果为6
b.g 结果为3
#但若使用类对象,会直接改变类的属性
aa.g = 8
#则a.g 结果为8
b.g 结果为8

访问属性

a.g 可以访问
也可以
用getattr(实例对象名,‘属性名’,‘若无此属性返回内容’)

但是方法只有实例对象才能调用,这个也是python的绑定概念

定义了实例对象,再删除该类,这个实例对象也是可以用的,

私有定义
由双下划线开头的为私有定义 __ a
不可被外部调用,只能内部

class dd:
__a = 4
def get(self)
return __a
#使用
g =dd
g.__a #不合法

外部使用私有变量
假如要在外部用a,需要借助方法get
g.get() 即可

实际上python的私有是一种 ‘假私有’(名字重整)
这是改变了变量名字 改为 __类名__变量名
所以g.__dd__a也可以在外部调用

继承操作:
class 类1名(类2名): 继承操作:类1继承类2的方法和属性

不能继承私有方法和属性
继承是有顺序的,从左往右,若有同名方法或属性,先继承前面的,后面的被屏蔽

如果子类中还定义与父类同名的方法或属性,则自动覆盖父类的对应的方法或属性

注意子类中再用__init__可能会覆盖父类中的需要的变量
解决方法有两个
一. 调用未绑定的父类方法
如 定义子类时 父类名.__ init __(self)即可
二. 使用super函数
用法在子类中 super().父类中需要的方法名()

如 super().__ init __() 可以自动找父类,以后也不用修改

可以多重继承,class 类1名(父类1名,父类3名,父类四名……):
如class ff (aa,cc,dd):

组合
即多个对象的组合、
就是把类的实例化放到另一个组合里

class a :
def __init__(self,x)
self.num = x
class c :
def __init__(self,y)
self.num = y
class d :
def __init__(self,x,y)
self.a = a(x)
self.c = c(y)
def pr(self)
print(‘a有%d个,c有%d个‘%(self.a.num , self.c.num)
结果为
g = d (3,4)
A有3个,c有4个

相关的BIF(内置函数)
issubclass(class,classinfo)
若第一个参数class 是第二个参数的子类或者本身返回true 否则返回false
第二个参数可以是一个元组,里面有各个类,只有其中一个是第一个的父类即符合条件
如issubclass(class,object) 返回true,,,,object是所有类的一个基类,所有类默认继承object

isinstance(实例对象名,classinfo)
检擦实例对象是否属于第二个参数类,是则返回true 否则则反之
第二个参数可以是一个元组,里面有各个类,只有其中一个即可
如果第一个参数不是传入对象,一直返回false

hasattr(对象名,name)
若对象里面有第二个参数这个属性,有则true,name是一个字符串有‘‘ 或“”

getattr(对象名,name [, default])
返回对象指定属性的值,若指定属性不存在将[, default的值打印出来,若不输入[, default]则返回异常

s etattr(对象名,name ,value)
设定对象中指定属性的值,若属性不存在则新建一个属性并赋值

delattr(对象名,name)
删除对象的指定属性,若属性不存在则异常

Property (fget = None, fset =None ,fdel = None,doc = None)
去设置一个存在的属性
Fget,是获取属性的方法
Fset设置属性的方法
Fdel删除属性的方法
但是具体方法要自己传入
使用

class q:
def __init__(self,size=10):
self.size = size
def get(self):
return Self.size
def set(self,value):
self.size = value
def dellll ():
del self.size
x = property (get, set,dellll)

设置size
q.x = 78
使用size
q.x
删除size
del q.x

说到这里。

很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

Python基础知识详解 从入门到精通(七)类与对象的更多相关文章

  1. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  2. RabbitMQ基础知识详解

    什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...

  3. Cisco路由技术基础知识详解

    第一部分 请写出568A的线序(接触网络第一天就应该会的,只要你掐过,想都能想出来) .网卡MAC地址长度是(  )个二进制位(16进制与2进制的换算关系,只是换种方式问,不用你拿笔去算) A.12  ...

  4. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  5. Thrift入门初探(2)--thrift基础知识详解

    昨天总结了thrift的安装和入门实例,Thrift入门初探--thrift安装及java入门实例,今天开始总结一下thrift的相关基础知识. Thrift使用一种中间语言IDL,来进行接口的定义, ...

  6. 直播一:H.264编码基础知识详解

    一.编码基础概念 1.为什么要进行视频编码? 视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成.一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧 ...

  7. 第157天:canvas基础知识详解

    目录 一.canvas简介 1.1 什么是canvas?(了解) 1.2 canvas主要应用的领域(了解) 二.canvas绘图基础 2.0 sublime配置canvas插件(推荐) 2.1 Ca ...

  8. Redis基础知识详解(非原创)

    文章大纲 一.Redis介绍二.Redis安装并设置开机自动启动三.Redis文件结构四.Redis启动方式五.Redis持久化六.Redis配置文件详解七.Redis图形化工具八.Java之Jedi ...

  9. Maven基础知识详解

    1. 简介   Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包   http ...

随机推荐

  1. GYCTF ezupload

    上传一句话,没有任何过滤 菜刀连接后,读取flag文件 bash -c/readflag >tmp cat tmp 上面是非预期的解法.应该是题出问题了.看了一个师傅的blog,看源码,发现预期 ...

  2. 通过cmd修改注册表(设置cmd窗口的大小)

    通过cmd修改注册表(设置cmd窗口的大小) 设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con:启动时设置窗口大小: cmd /k "mode ...

  3. VUE 路由参数改变重新刷新数据

    VUE 路由参数改变重新刷新数据 App.vue 里面使用路由,然后通过App.vue文件中的搜索功能搜索刷新路由文件中的列表. 修改 index.js 文件 首先在路由文件 index.js 文件中 ...

  4. Ionic 使用 NFC

    Ionic 使用 NFC 哎哟喂,因为项目需要使用 Ionic 调用手机 NFC 功能,踩了好多坑,真的是,不过终于不负众望拿到了id.现在就记录一下我的步骤和踩过的坑! 步骤 我装的Ionic可能是 ...

  5. Abp的swagger UI 出现Failed to load API definition.

    Abp 出现Failed to load API definition.如下图: 原因:本次出现的原因是Api里面的方法重名了(只是方法的参数不一样)(可能是controller中的auction上面 ...

  6. python3练习100题——034

    题目:练习函数调用. 这个很容易了. def hello_world(): return "hello, world!" def fun(): print(hello_world( ...

  7. Cron表达式及其使用注意事项

    Cron表达式简介 Cron表达式全程Crontab表达式,是描述Crontab定时任务执行周期的一种语法格式.而Cron表达式严格上来说有许多特别的版本.如:Linux的.Spring的.Quart ...

  8. JS高级---沙箱小案例

    沙箱小案例 substr截取, 从指定的字段开始截取 (function () { var str="小白喜欢小黑"; str=str.substr(2); console.log ...

  9. 使用 C++11 编写可复用多线程任务池

    类的功能 Task (任务基类) 该类主要实现一个任务类 virtual int doWork() = 0; TaskQueue (任务队列) 该类主要针对任务的存储.删除.撤回等状态做管理 Thre ...

  10. 顶级Kagglers的心得和技巧

    这是一篇笔记,课程来自Coursera上的How to Win a Data Science Competition: Learn from Top Kagglers 本篇可以算是顶级Kaggler大 ...