访问限制
私有变量
如想要内部属性不被外部访问,可在属性的名称前加上两个下划线‘__’,在python内部,实例的变量名如果以__开头,就变成了一个私有变量,只有内部可以访问,外部不能访问。
获取对象信息
当我们拿到一个对象的引用时,如何知道这个对象的是什么类型,有什么方法?
- type()
- isinstance()
可以判断某个对象是否是某种类型,返回True、False。eg:isinstance(‘abc’,str) - dir()
可以获得一个对象的所有属性和方法。其中,类似__xxx__的属性和方法在python中都是有特殊用途的。如__len__方法返回长度,在python中,如果调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__方法。
定义类属性和实例属性
- getattr()
- setattr()
- hasattr()
实例属性与类属性
python是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过self变量。
class Student(object):
def __init__(self, name):
self.name = name
s = Student('Bob')
s.score = 90
如果需要给类本身绑定一个属性,可直接在class中定义属性,这种属性是类属性,归该类所有。
class Student(object):
name = 'Student'
访问类属性和实例属性
实例属性属于各实例所有,互不干扰。而所有实例可以共享一个类属性。