首页 > 代码库 > python面向对象类

python面向对象类

面向对象变成介绍

面向过程编程

核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。主要应用在一旦完成很少修改的地方,如linux内核、git、apache服务器等

优点:极大的降低了程序的设计复杂度

缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身

面向对象编程:不是编程的全部,只是用来解决软件可扩展性的

核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向对象就是把计算机程序作为一个对象集合,每隔对象都能接收其他对象传来的消息,计算机程序的执行就是就是一系列消息在各个对象之间传递。主要应用在需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等

优点:解决了程序的可扩展性差的问题,对某一个对象修改会立刻反映到整个程序体系

缺点:可控性差,无法预测程序执行结果

类和对象

对象的概念

对象也叫做实例,是通过类产生的,对象就是数据属性和方法属性的结合体,比如lol中的英雄,一个英雄就是一个对象,具备生命值、蓝条攻击力等数据属性,又具备qwer四个技能属于方法属性。

类的概念

类包含了一组对象的相同属性部分,比如游戏人物,所有的人物都有名字、标签(坦克战士法师)、生命值、蓝条攻击力等,虽然具体的值不同,但是都可以包含在类中去生成。

在python中,用变量表示是数据属性,用函数表示方法属性。

在现实生活中,先有对象后有类,比如先有的人,后有的人类的概念,而在编程中,是先有的类,后有的对象,类生成对象。

声明一个类:和函数的定义类似

定义函数:通过def关键字

定义类:通过class关键字

‘‘‘
class 类名:
    数据属性
    方法属性
‘‘‘
class Style:
    pass
class Chinese:
    country=china #数据属性
    def __init__(self,name,color,age):  #init函数一定不能有返回值,只能初始化
        if not isinstance(name,str):
            raise TypeError
        self.name=name #p1.name=‘xiaobai‘
        self.color=color #p1.color=‘yellow‘
        self.age=age #p1.age=22
    def talk(self):     #函数属性
        print(%s is talking%self.name)
    def eat(self):
        print(is eating)
    def laugh(self):
        print(is laughing)
#实例化:__init__(p1,name,color,age)
p1=Chinese(xiaobai,yellow,22)
p2=Chinese(xiaohei,yellow,25)
print(Chinese.__dict__)#使用__dict__查看Chinese类下的属性
print(p1.__dict__)#使用__dict__查看Chinese对象实例化p1下的属性
p1.talk()
print(Chinese.country,id(Chinese.country))
print(p1.country,id(p1.country))

执行结果

{‘__module__‘: ‘__main__‘, ‘country‘: ‘china‘, ‘__init__‘: <function Chinese.__init__ at 0x0000024C5D9CB9D8>, ‘talk‘: <function Chinese.talk at 0x0000024C5D9CBA60>, ‘eat‘: <function Chinese.eat at 0x0000024C5D9CBAE8>, ‘laugh‘: <function Chinese.laugh at 0x0000024C5D9CBB70>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Chinese‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Chinese‘ objects>, ‘__doc__‘: None}  #Chinese.__dict__


{‘name‘: ‘xiaobai‘, ‘color‘: ‘yellow‘, ‘age‘: 22} #p1.__dict__


xiaobai is talking  #p1.talk()

 

china 2906932484504   #print(Chinese.country,id(Chinese.country))


china 2906932484504    #print(p1.country,id(p1.country))

从执行结果中可以看出类有数据属性和函数属性,对象只有数据属性。对象有着类所没有的数据属性,并且对象有着类中共同的数据属性和函数属性。

 

python面向对象类