当前位置: 首页 > 后端技术 > Java

Python-面向对象编程(二)

时间:2023-04-01 16:01:04 Java

面向对象进阶:初阶我们介绍了面向对象的基本知识:1.面向对象是一种编程方式,这种编程方式的实现是基于类和object的使用  2.介绍类中的对象、方法和属性以及类中的内置方法  3.一个类就是一个模板,模板中封装了多个“函数”供使用(可以说多个函数是通用的4.对象,根据模板创建的实例(即:object),实例用来调用包裹在类中的函数  5.对象的三大特点-面向:封装、继承和多态本文将详细介绍Python类的成员、成员修饰符、类的特殊成员1、类的成员:类的成员可以分为三类:字段、方法,和属性注意:在所有成员中,只有普通字段的内容存储在对象中,即根据这个类创建了多少个对象,内存中有多少个普通字段。其他成员都保存在类中,即:不管有多少个对象,在内存中只创建一个副本。1、字段包括:普通字段和静态字段。它们在定义和使用上都不同,最本质的区别是它们在内存中存放的位置不同。普通字段属于对象。静态字段属于类Province:#静态字段country='China'def__init__(self,name):#普通字段self.name=name#直接获取普通字段obj=Province('河北省')printobj.name#直接访问静态字段Province.country上面代码可以得到【公共字段需要通过对象访问】和【静态字段通过类访问】。在使用中,可以看出普通字段和静态字段的归属是不同的。静态字段只在内存中保存一份。普通字段在每个对象中保存一份。应用场景:通过类创建对象时,如果每个对象都有相同的字段,则使用静态字段。2.方法和方法包括:普通方法、静态方法和类方法,这三种方法在内存中都属于类,区别在于调用方法不同。1.>普通方法:由对象调用;至少一个自身参数;执行普通方法时,调用该方法的对象自动赋值给self;  2.>静态方法:由类调用;没有默认参数。  3.>类方法:由类调用;至少一个cls参数;类方法执行时,调用该方法的类自动复制到cls;#方法类Foo的定义和使用:def__init__(self,name):#构造方法self.name=name      #普通字段deford_func(self):"""定义一个普通方法,至少有一个selfparameter"""#printself.nameprint'普通方法'@staticmethod          #定义静态方法关键字defstatic_func():"""定义静态方法,无默认参数"""print'staticmethod'@classmethod          #定义类方法关键字。defclass_func(cls):"""定义类方法,至少有一个cls参数"""print'classmethod'相同点:对于所有的方法,都属于类(非对象),所以只有一份保存在内存中。区别:方法调用者不同,调用方法时自动传入的参数不同。3.属性如果你已经知道Python类中的方法,那么属性就很简单了,因为Python中的属性其实就是普通方法的变体。对于属性,有以下三点知识点:属性的基本使用定义属性的两种方式1.属性的基本使用装饰器:对方法应用装饰器静态字段:在类中定义静态值作为属性对象字段属性的定义和调用需要注意以下几点:定义时在普通方法的基础上添加@property装饰器;定义时,属性只有一个自参数调用时,不需要括号method:foo_obj.func()property:foo_obj.prop注:属性的含义是:访问属性时,可以创建和进入领域一样的错觉。属性是方法的变体。如果Python中没有属性,方法完全可以代替它的功能。示例:对于主机列表页面,不可能每次请求都在页面上显示数据库中的所有内容,而是通过分页功能在本地显示,所以在向数据库请求数据时,需要显示指定获取从第m篇到第n篇的所有数据(即:限制m,n),本次分页的功能包括:根据用户请求的当前页面和数据文章总数计算m和n,然后根据m和n去数据库请求数据#调用普通方法f=Foo('Kity')f.ord_func()#调用静态方法Foo.static_func()#调用类方法Foo.class_func()###静态方法和类方法的好处是节省内存空间,不需要每次调用都开辟内存空间。相同点:对于所有的方法,都属于类(不是对象),所以内存中只保存一份。区别:方法调用者不同,调用方法时自动传入的参数不同。3.属性如果你已经知道Python类中的方法,那么属性就很简单了,因为Python中的属性其实就是普通方法的变体。对于属性,有以下三点知识点:属性的基本使用定义属性的两种方式1.属性的基本使用装饰器:对方法应用装饰器静态字段:在类中定义静态值作为属性对象字段属性的定义和调用需要注意以下几点:定义时在普通方法的基础上添加@property装饰器;定义时,属性只有一个自参数调用时,不需要括号method:foo_obj.func()property:foo_obj.prop注:属性的含义是:访问属性时,可以创建和进入领域一样的错觉。属性是方法的变体。如果Python中没有属性,方法完全可以代替它的功能。示例:对于主机列表页面,不可能每次请求都在页面上显示数据库中的所有内容,而是通过分页功能在本地显示,所以在向数据库请求数据时,需要显示指定获取从第m篇文章到第n篇文章的所有数据(即:限制m,n),本次分页的功能包括:根据用户请求的当前页面和数据文章总数计算m和n,并根据m和n去数据库请求数据