2.1.0 Python初识面向对象

点击跳转笔记总目录

一、面向过程:

面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。

==优点:== 极大地降低了写成学的复杂度,只需要顺着执行的步骤,堆叠代码即可

==缺点:== 一套流水线或者流程就是用来解决一个问题,如果修改代码就都得改变

二、面向对象:上帝的思想

==优点:== 解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

==缺点:== 可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

三、类:是具有相同特征的一类事物(人,狗,老虎)

对象/实例:具体的某一事物

实例化:类到对象的过程(实例=类名(参数1,参数2))

四、初始类和对象

类的定义:

class  Person:   #class  类名:
    #注意类名后面不要括号 
    类体

在python中,用变量表示特征,用函数表示技能,因而具有相同的特征和技能的一类事物就是‘类’,
对象则是这一类事物中具体的一个
==类的两种作用:== 属性引用和实例化
属性引用:

class Person:
    role = '中国人'  #类属性----静态属性
    def walk(self):  #这里的函数叫做方法-----动态属性
        #注意:self必须写
        print('person is walking ...')
print(Person.role) #查看类属性
print(Person.walk) #查看类方法 , 用类名去调用方法名,打印出来的是内存地址

实例化:

class Person:
    role = '中国人'
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
    def walk(self):
        print('person is walking')

p= Person('腿姐',21) #实例化:类名(参数1,参数2)  类名()就等于在执行Person.__init__()
print(p.name)  #直接查看属性   对象名.属性名
print(p) #返回的是一个对象
p.walk()  #调用方法  ,对象名.方法()

==对象的两种作用:查看属性和调用方法(咋上面的实例化中讲到)==

五、关于self

self:在实例化时自动将对象/实例本身传给init的第一个参数,你也可以给它起个别的名字,但是一般正常人都不会这么做,因为你改了别人就不认识了。

注意:def init(self): 这句话可以写也可以不写,只要有参数参进来的时候就必须得写

class Person:
    def  eat(self):
        #这里的self必须得写
        pass

六、特殊的类属性

class Person:
    role = '中国人'
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
    def walk(self):
        print('person is walking')

p= Person('腿姐',21) #实例化一个对象
print(Person.__name__,type(Person.__name__)) #查看类的名字(这里的类名是字符串类型的)
print(Person.__dict__) #查出的是一个字典,key为属性名,value为属性值
print(Person.__doc__)## 就是把注释显示出来
print(dir(Person)) #查看类的方法,以列表的形式显示出来
print(Person.__module__) #类定义所在的模块
print(Person.__class__)
print(isinstance(p,Person))#判断对象 是否是类的实例

七、对象的相关知识

1.对象是关于类而实际存在的一个例子,即实例
2.对象/实例只有一种作用:属性引用

egg = Person('egon',10,1000)
print(egg.name)
print(egg.aggressivity)
print(egg.life_value)  #当然,你也可以引用一个方法,因为方法也是一个属性。

八、面向对象小结

定义及调用的固定格式

class 类名:
    def __init__(self,参数1,参数2):
        self.对象的属性1 = 参数1
        self.对象的属性2 = 参数2

    def 方法名(self):
        pass
    def 方法名2(self):
        pass

九、对象之间的交互

人狗大战小程序

class Person:
    def __init__(self,name,aggr,life_value):
        self.name=name
        self.aggr=aggr
        self.life_value=life_value
    def attack(self,dog): #人可以攻击狗
        dog.life_value=dog.life_value-self.aggr
class Dog:
    def __init__(self,name,aggr,life_value):
        self.name = name
        self.aggr = aggr
        self.life_value = life_value

    def attack(self,egg): #狗也可以攻击人
        egg.life_value = egg.life_value - self.aggr
egg = Person('egon',250,1000)  #示例化一个人呢
dog = Dog('乐乐',50,2000)  #实例化一个狗
print('狗没攻击前egon的生命值:',dog.life_value)  #没攻击前egon的生命值
egg.attack(dog)   #让egon去攻击狗乐乐
print('狗攻击后egon的生命值:',dog.life_value)  #攻击后egon的生命值

print('egon没攻击前狗的生命值:',egg.life_value)  #没攻击前egon的生命值
dog.attack(egg)   #让狗去攻击egon
print('egon攻击后狗的生命值:',egg.life_value)  #攻击后egon的生命值

十、类命名空间与对象,实例的命名空间

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字成为类的属性
而类有两种属性:静态属性和动态属性

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

推荐阅读更多精彩内容