组装:将数据和操作组装在一起
隐藏数据: 对外只暴露一些接口,通过接口访问对象。
多复用,继承来的就不用自己写了
多继承少修改,OCP(Open-closed Principle),使用继承来改变,来体现个性
面向对象编程最灵活的地方,动态绑定
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() # 实例化
MyClass() 实际上调用的是__Init__(self)方法,可以不定义,如果没有定义会在实例化后隐式调用。
其实就是对实例进行初始化(__init__()方法不能有返回值,也就是只能是None)
实例变量是每一个实例自己的变量,是自己独有的;
类变量是类的变量,是类的所有实际共享的属性和方法
特殊属性 含义
__name__ 对象名
__class__ 对象的类型
__dict__ 对象的属性的字典
__qualname__ 类的限定名
指的是实例使用。来访问属性,会先找自己的__dict__,如果没有,然后通过属性__class__找到自己的类,再去类的__dict__中找
PS:
如果实例使用__dict__[变量名] 访问变量,将不会按照上面的查找顺序找变量了,这是指明使用字典的key 查找,不是属性查找。一般,类变量使用全大写来命名。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。