python基础知识详解-Python基础知识详解 从入门到精通(七)类与对象

本篇主要是介绍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教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值