Python 面向对象

面向对象三要素

1、封装

组装:将数据和操作组装在一起

隐藏数据: 对外只暴露一些接口,通过接口访问对象。

2、继承

多复用,继承来的就不用自己写了

多继承少修改,OCP(Open-closed Principle),使用继承来改变,来体现个性

3、多态

面向对象编程最灵活的地方,动态绑定

Python 类的定义

class  ClassName:
     语句块
     
1、必须使用class 关键字
2、类名必须使用大驼峰命名
3、类定义完成后,就产生了一个类对象,绑定到了标识符ClassName上
PS:

     class MyClass:
        """A example class """
        x = 'abc'      
        def foo(self):
            return 'My Class'
     print(MyClass.x)
     print(MyClass.foo)
     print(MyClass.__doc__)
     print(MyClass.__name__)
     

类对象及类属性

类对象,类的定义就会生成一个类对象

类的属性,类定义中的变量和类中定义的方法都是类属性

类变量, 上例中x是类MyClass 的变量

实例化

a = MyClass() # 实例化

__init__ 方法

MyClass() 实际上调用的是__Init__(self)方法,可以不定义,如果没有定义会在实例化后隐式调用。

其实就是对实例进行初始化(__init__()方法不能有返回值,也就是只能是None)

实例变量和类变量

实例变量是每一个实例自己的变量,是自己独有的;

类变量是类的变量,是类的所有实际共享的属性和方法

特殊属性            含义
__name__         对象名
__class__        对象的类型
__dict__         对象的属性的字典
__qualname__     类的限定名

实例属性的查找顺序

指的是实例使用。来访问属性,会先找自己的__dict__,如果没有,然后通过属性__class__找到自己的类,再去类的__dict__中找

PS:

如果实例使用__dict__[变量名] 访问变量,将不会按照上面的查找顺序找变量了,这是指明使用字典的key 查找,不是属性查找。一般,类变量使用全大写来命名。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券