python快速入门笔记三(极精简知识点)------伏虎山真人

文中内容是我近期学习python所留下来的笔记,上传平台是为了保存防止误删造成笔记丢失,跪求浏览笔记的朋友给个赞

类的概念

概念:类是现实世界或思维世界在计算机的反映,它将数据以及数据的操作封装在一起(数据在类中可以代表现实中的特征
行为)
关键:行为,特征,主体三者的关系是否相适合

结构:

class classname(object):
    pass

classname(类的名字):建议首字母大写
object(类的参数):

类的内部可以定义变量,还可以定义函数(类下的函数叫方法,类下的函数一定要加self,在类下的函数里要用类定义的
变量是要在函数变量前加上(self.))

注意
1.类主要只负责去描述定义,而不负责去执行,所以不要在类的内部不要去调用函数
2.最好将类放在一个模块里,而在另一个模块里写调用的代码,然后通过from***importr***

对象的概念

表示一个具体的概念
当类实例化之后就变成了一个对象,实例化相当于赋予了类一个具体的概念(一般来说实例化时会向类传递一些数据让它变得的有意义)就比如:用类来描述一个人,人有年龄,身高,体重等等在实例化时通过传递年龄身高体重的具体值来产生一个具体的对象人 类就像是一个模板一样,通过类可以产生很多个对象(类就像上帝造物的模板,通过产生许许多多不一样的人,而这个过程就是实例化

实例化

类就像上帝造物的模板,通过产生许许多多的对象(人),而这个过程就是实例化
通过类产生的多个对象在内存里的地址不同,或许他们看起来一样但他们在计算机里是不同物
实例化里可以通过一个特殊函数来传递给类特殊的数据使产生的对象不一样,这个函数是:def init():code

构造函数:

def init()

作用:在实例化时能够传递给类特殊的数据使产生的不一样的对象

注意在构造函数的()里假如加入了形参时,在实例化里也要加如相应的数据
例如:

class Ren():
        name=''
        age=0
        def __init__(self,name,age):
                name=name
                age=age
                pass
wo=Ren(name,age)

这样就完成了传递
记住写类时要初始化对象的属性如:name=’'和age=0就是将name和age两个属性给初始化,而实例化时就改变了name和age

析构函数

def del()

作用

在清除对象时,回收和释放对象所占用的资源。

变量的作用域

局部变量无法改变全局变量

            模块下的变量和类中的变量的区别

注意:python里的模块下的变量和类中的变量是不一样的,所以变量作用域中的全局和局部变量的规则不适用于python里的模块下的变量和类中的变量。类中变量的机制和模块是不一样的。

1.当实例化类时,构造函数是自动调用的
2 .构造函数只能返回None(空值)不能强制返回其他值

            类变量和实例变量

例如:

class Ren():
        name=''
        age=0
        def __init__(self,name,age):
                self.name=name
                self.age=age

其中name=’'是类变量,而self.name是实例变量
age=0 self.age
类变量:和类相关联。在类中定义了的变量,
实例变量:和对象相关联,是对象的属性,定义实例变量的方式,在变量名前加上self.
其中构造函数中的self就是标志,也可以改为this或其他字符标识,但最好用self

类和对象的思想:

类可以是理解成一个群体,例如人这个物种,从类的角度来看,某个人的特征如姓名,年龄,身高对
整个群体是没有意义的,但从对象来说,他是有意义的,因为某个人他就是一个对象。

python中类与对象的变量查找顺序:

如果尝试去寻找访问一个实例变量,那python会首先在一个实例变量列表里找,如果没有这个实例变量,他并不会返回空(none)
而是会继续在类变量的列表中访问。

实例方法

实例方法:在定义实例方法的时候,必须在参数列表上放一个self,而在调用实例方法的时候,则不需要
self就是代表当前调用某一个方法的对象,只和对象实例有关,和类无关。所以之前的实例变量名前加上self.就是表示这是对象实例变量

在实例方法中访问实例变量和类变量

1.实例方法访问实例变量,还是在变量名前加self.,而在构造函数里使用某个变量不使用self.,虽然有时也能得到想要的结果但是这不是实例
变量,而是传入的实参。
2.实例方法访问类变量是也要加前缀,前缀为classname.即是将 类名.当前缀加在类变量名前
也可以用self.class.类变量名

类方法

定义类方法如图

class ren():
	@classmethod
	def funcname(cls, parameter_list):
		pass

和定义实例方法不同的是self变成了cls,在def上一行又加入了@classmethod(@的这种形式叫做装饰器)
同样的cls也可以换成其他字符
类方法关联的是类本身,在操作与对象无关与类有关的时候,建议用类方法
之前讲解的有类调用实例方法,所以也可以用对象调用类方法
在这里插入图片描述

静态方法

定义方法如

@staticmethod
def funcname(parameter_list):
	pass

调用静态方法: 可以被对象和类调用。同时静态方法也可以调用类变量
在这里插入图片描述

三种方法(实例方法,类方法,静态方法)都可以通过实例来调用,但是静态方法和类方法无法访问实例属性(实例属性即是实例变量,实例方法即是实例函数)
但是类方法和静态方法不能操作实例变量,在类方法对类变量进行操作时,还没有实例产生,所以不能调用实例变量

成员的可见性

类的内外之分:
1.内部调用:在类里面调用类中的方法,变量
2.外部调用:在类外面调用类中的方法,变量
但是所有的成员变量都可以从外部访问,这造成了类的不安全,有时候我们不想让他们更改我们的成员数据
这时有这样的方法:另外通过方法来进行,例如给学生打分的时候,我们通过if else语句来限制,假如你不是管理员没有密码,你就无法进行操作
这就像是加密,所以python建议使用方法进行对成员数据赋值,这样既能保护又能加密。

如何防止外部对成员进行操作
private成员:在成员名前加上双下划线__,表示这是一个私密成员。不能够在外部访问,调用或者操作(注意只在名加上__)
public成员:成员名前没有双下划线,python就默认这是一个公开的成员,可以在外部进行访问,调用或者操作
特例:构造函数等一些前后都有__的成员不会被python认为是私密成员
双下划线的原理:
python是通过改名给私密变量加密,可以通过__dict__来查看改后的名字,然后再通过改后的名字来改私密变量的值,所以可以这样说想改python的私密变量只是比改公开变量多了一道查询
改后的名字的步骤,所以没用什么是不能访问的。

面向对象的三大特性:继承性,封装性,多态性

继承

**1.继承基本作用从面向对象的语法来讲避免定义重复的方法和重复的变量
对应现实中的事物关系来讲,继承意味着可扩展,例如我们定义一个类将其抽象成为学生,学生又可以向上抽象成人,所以人也是一个类,那么学生和人之间就构成了继承关系
python可以在一个模块下写多个类,但为了清晰最好还是在一个模块只写一个类
2.继承方式:在类的列表里加入父类名例如(people是student的父类)

class student(people):
	pass
class people():
	pass

子类可以直接继承父类的类变量和实例变量。
一个父类可以有多个子类由此类推,还有子子类,同时python还有多继承,一个子类可以有多个父类但是单继承比多继承的类关系之间更清晰

所以我们才开始应该先用好单继承。
子类应该也有属于自己的特征属性。
既然是继承父类那么子类的构造函数就要一种方法来使对象的实参透过子类的构造函数传入父类的构造函数
低级方法:例如:

def __init__(self,school,name,age):#子类的构造函数
people.__init__(self,name,age):#父类的构造函数

思考为什么在例子中父类的构造函数的参数列表也加了self,而实例化时不用加self?
实例化时python的实例化机制自己帮我们添加了self,所以通过对象来调用方法不需要加self,而在类中调用就需要我们自己加入self**

            子类方法调用父类方法:super关键字

super(子类名,self).方法名(name,age)
例如调用构造函数:

super(student,self).__init__.(name,age)

当子类的方法和父类的方法重名时,会优先调用父类的方法

5月11日重新排版,之前的排版惨不忍睹😂,还有一些内容我会慢慢补起来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值