1、Python 类的属性
属性类别 | 介绍 | 备注 |
---|---|---|
公有 | 类内类外皆可调用 | 默认 |
私有 | 只限于类内调用 | 命名以双下划线’"__"开始 |
内置 | 系统定义类时默认添加的 | 命名一般以前后双下划线组成 |
1)在Python中,以双下划线开头,并且以双下划线结尾的变量是特殊变量如__name__,特殊变量是可以直接访问的;
2)按照约定俗成的规定,以一个下划线开头的实例变量名(例如_category) 外部也是可以直接访问的,但是这个形式的变量表达的意思是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”
2、Python 类的方法
方法类别 | 介绍 | 备注 |
---|---|---|
公有 | - | 默认 |
私有 | 只限于类内调用 | 命名以双下划线’"__"开始 |
类方法 | 能被类或对象调用 | 被classmethod函数调用或被@classmethod装饰器修饰 |
静态方法 | 相当于“全局方法” | 被staticmethod函数调用或被@staticmethod装饰器修饰,不用self |
3、Python 魔术方法
在Python语言中,所有以双下划线“__”包起来的方法,都统称为“魔术方法”。
使用魔术方法可以构造出非常优美的代码,比如将复杂的逻辑封装成简单的API等。
1、魔术方法中的“__init__()”方法一般叫做构造函数,用于初始化类的内部状态和参数。
如果不提供,Python语言会给出一个默认的“__init__()”方法
2、魔术方法中的“__ del __()”函数叫做析构函数,用于释放对象占用的资源。“__del__()”函数是可选的,
如果不提供,Python语言会在后台提供默认析构函数。
4、反射机制
在 Python 中使用反射可以得到对象的所有属性,这个机制被称为反射(反过来让对象告诉我们他是什么),用于实现在运行时获取未知对象的信息。
"""
python中有几个内置方法,可以用来检查或是访问对象的属性。
这些方法可以用于任意对象
"""
dir([obj]):#调用这个方法将返回包含obj大多数属性名的列表(会有一些特殊的属性不包含在内)。
hasattr(obj, attr):#这个方法用于检查obj是否有一个名为attr的值的属性,返回一个布尔值。
getattr(obj, attr):#调用这个方法将返回obj中名为attr值的属性的值,
setattr(obj, attr, val):#调用这个方法将给obj的名为attr的值的属性赋值为val。
type(obj):#判断对象类型,使用type()函数