python全栈day15

面向对象编程                              

一.关键字class

结构:

class 类名():
    类型体

内部的变量:静态属性,静态变量,静态字段
内部的函数:函数,动态属性,方法

class Person:
    role = 'person'    #静态属性
    language = '语言'
    sport = '直立行走'
    def eat(self):      #动态属性,也称为方法
        print('吃吃吃。。。。。')
    def run(self):
        print('跑跑跑。。。。')

  

二.函数vs面向对象

  1.函数封装一个功能,类封装多个相关功能。
  2.面向对象抽象,它是一种思想,站在上帝的角度去理解他。
  3.面向对象程序可扩展,且对象都是独立的,既有耦合性又有差异性。

三.类与对象的定义

  类:具有相同属性或者功能的一类实物。
  对象:对象是类的具体体现。


四.类的操作

1.查看类中的所有属性及方法:__dict__(可以查,不能增删改)
  现实情况下一般用__dict__就是查看类中的所有属性及方法,不进行其他操作。

2.查看类中的某个,某些属性,某个方法,用万能的点(.),可以进行属性的增删改
  1)增:类名.新增属性 = 值
  2)查:类名.属性
  3)改:类名.原属性 = 新值
  4)删:del 类名.属性

3.执行某个方法
  1)不建议通过__dict__执行方法
  2)一般使用:类名.方法()

插入点:特殊方法  __init__(self)
  类名加(),这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象内存空间)
  实例化过程进行三个阶段:
    1)在内存中开辟了一个对象空间,在空间内放置一个类对象指针
    2)自动执行类中__init__方法,并将对象空间的地址传给了__init__函数的self,其他参数手动传入
    3)执行__init__方法,给对象空间封装对应的属性
  总结:__init__()方法的功能就是给对象空间封装多个属性。


五.对象的操作

1.对象操作对象空间
  1)查看对象空间里的所有属性
    对象名.__dict__
  2)对象操作对象空间里的某个属性
  增:对象名.新属性 = 值
  删:del 对象名.属性名
  改:对象名.属性名 = 新值
  查:print(对象名.属性)
2.对象操作类空间的属性
  只能查看类空间里的属性,只要改就等同于在对象中加一个属性。

3.对象操作类空间的方法
  大多数情况下,都是对象去调用类中的方法。

六.类名称空间,对象名称空间

1.对象为什么能调用类空间里的属性?
  对象只能查看类中的属性,不能增删改类中的属性。因为在创建类对象时内部就有一个类对象指针,对象的内存空间会又指向类的空间。
2.类能不能调用对象属性?    不能,类是模板是死的,对象是活的。
3.对象能不能调用其他对象的属性?
  不能,同一个类实例化出来的对象之间是不能相互访问的;不同类实例化的对象有可能互相访问。

给一个对象增加属性,可以在任意位置增加。

原文地址:https://www.cnblogs.com/abner28/p/9526351.html