Python面向过程和面向对象

面向过程和面向对象

面向过程:代码顺序执行、模块之前尽可能的独立

面向对象:根据不同的需求执行代码

注意:面向对象只是一种思想,并不是一门编程语言

类的定义

1.类是什么?

类是自定义的数据类型,然后这个数据类型的变量就叫做对象

2.类有什么用?

类可以把现实世界的物和事抽象为代码,然后通过代码解决现实问题或需求

3.怎么抽象?

任何事务都有自身的属性(变量)和方法(函数),

4.类的定义

格式:

class Maker():

    name='小明'#成员属性,成员变量

    def add(self,a,b):#成员方法,成员函数

        return a+b

说明:

1.python使用class来定义类

2.类名只要符合标识符的规则就可以,一般使用大小驼峰法取名字

3.类的内容是就是属性(对类的特征的描述)和方法(对类的行为的描述)

4.类名一般首字母为大写,对象一般首字母为小写

注意:

    1.类中的成员方法区别于普通方法:参数部分一定包含self,而且最好self出现在参数列表的第一个

   2.调用函数的时候,self不需要被传参

#案例:抽象一个汽车,写成类

class Car():

#属性

    name='BMW'

    color='白色'

    #方法

    def func(self):

print("代步")

def func2(self):

print("运输货物")

#案例:把电脑抽象出来,写成一个类

class Pc():

name='苹果'

    color='银色'

    cpu='i7'

    def __init__(self):

print("Pc的init函数")

def func(self):

print("编程")

def func2(self):

print("看电影")

def func3(self):

print("玩游戏")

p1=Pc()

p1.func3()

1.对象的创建

    1.格式:对象=类名()

    2.类在本文件定义,对象也在本文件创建

    3.类在别的文件定义,对象在本文件创建

    4.__init__(self):#当对象创建时,会调用该函数

2.调用属性

对象名.属性名

1.声明在类中的变量叫类属性,所有的对象都可以使用

2.定义对象属性:对象.类中没有的属性名=值

3.对象属性的特点是该属性只有该对象可以使用

#案例:定义一个学生类,类属性有name,age,然后通过对象修改类属性的值,然后给对象添加属性score,并打印

class Student():

name='小明'

    age=18

#创建对象

s=Student()

print(s.name,s.age)

s.name="小花"

s.age=28

print(s.name,s.age)

#给对象添加属性

s.score=88

print(s.score)

3.调用方法

对象名.方法名()

所有的成员方法(成员函数)都有一个self参数,该参数在调用函数时,不需要传递实参

案例:定义一个学生类。有下面的

属性:1 姓名,2 年龄,3 成绩(语文,数学,英语)[每课成绩的类型为整数]

类方法:1 获取学生的姓名:get_name() 返回类型:str;2 获取学生的年龄:get_age() 返回类型:int;3 返回3门科目中最高分数的课程。get_course();4 返回该学生的平均成绩get_avg()

class Student2():

name='小王'

    age=12

    y=90

    s=100

    e=88

    def get_name(self):

return self.name

def get_age(self):

return self.age

def get_course(self):

return max(self.y,self.s,self.e)

def get_avg(self):

return (self.y+self.s+self.e)/3

ss=Student2()

name=ss.get_name()

print(name)

print(ss.get_age())

print(ss.get_course())

print(ss.get_avg())

注意:如果要在类中的成员函数里使用类属性,那么使用时,要在类属性前面加上self.类属性

名称说明:

类中定义的变量:类属性,类变量

对象自身定义的变量:对象属性,实例属性,实例变量

成员变量包含类变量和实例变量

全局变量和局部变量是相对于作用域来说的.

self介绍

1.self是对象自己,哪个对象调用成员函数,那么成员函数的self就是哪个对象

class Maker():

    def test(self):

        print("test")

m=Maker()

m.test()#解析器会把m传递到test中  ---->test(m)

m2=Maker()

m2.test()

2.这个传递动作不是程序员完成的,是解析器完成的

3.self的作用:

    1.可以使用self.在成员函数中访问类变量

    2.可以区分局部变量和类变量

    3.可以在成员函数内定义对象属性

    4.可以通过成员函数返回对象本身

#案例:有对象属性(姓名,年龄,分数),设计一个类,类中有修改对象属性值的方法,打印对象属性的方法

#其中分数属性在修改函数内定义,修改年龄时要判断是否合法,如果不合法打印不合法

class Student():

def printName(self):

print(self.name)

def printAge(self):

print(self.age)

def printScore(self):

print(self.score)

def setScore(self,mys):

#定义了对象属性,并赋值

        self.score=mys

def setName(self,myname):

self.name=myname

def setAge(self,myage):

if myage>0 and myage<=140:

self.age=myage

else:

print("输入的年龄不合法")

s=Student()

#定义对象属性

s.name="小明"

s.age=18

s.setScore(100)

s.setName('小花')

s.setAge(-20)

s.printAge()

s.printName()

s.printScore()

构造函数

1.构造函数是给对象的实例变量赋初始值

2.当一个对象被创建的时候,第一个被自动调用的函数

3.语法:

__init__(参数列表):

    函数体

4.构造函数的参数在定义对象时传递,如:m=Maker(实参) ->实参传递到__init__(形参)

5.如果没有显示定义构造函数,那么系统默认提供一个无参的构造函数,这个无参的构造函数是空函数体

手动添加了有参的构造函数之后,系统将不再提供无参的构造函数

6.m=Maker()#调用无参构造;m=Maker(10)#调用有参构造函数

析构函数

1.当删除一个对象时,python解释器也会调用一个函数,做清理工作,这个函数就叫析构函数

2.格式:

__del__(self):

3.time模块中的sleep(时间)可以暂停代码运行

4.删除对象用del,格式:del 对象名

5.当1个变量保存了对象的引用,此时对象引用计数器就加1,

当使用del删除变量指向的对象时,引用计数器就减1,当减到0时,就调用析构函数

6.作用:通常是销毁/删除临时的变量,主要对那些长期占用内存的临时变量进行销毁.有些程序是不结束的或运行很久的

7.对象的大小取决于成员变量的大小

魔法方法

魔法方法:很魔幻

格式:__xxxx__(self)

xxxx有很多,如:

add 加法(两个对象相加时调用)

lt  小于(两个对象比较时调用)

str 字符串(打印对象时调用)

....

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容