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 字符串(打印对象时调用)

....

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容