private:
1.在类中的属性或者方法前加上两条下划线“__”,该属性或方法就变成了私有的了,只能在类内访问。
2.如果想从外部访问私有属性或者方法(不建议访问),有两种方法,一是定义一个函数进行访问,二是对私有的属性或者方法的名字进行转换为:一个下划线“_”+类名+私有属性或者方法的名字。
protected:
1.在类中的属性或者方法前加上单下划线“_”,该属性或者方法就变成protected, 只能类内访问或者子类访问
public:
1.没有下划线的是public, 可以类外、类内、子类访问
特殊方法:
1.__xx__表示的是特殊属性或者方法,不要定义这类变量名,这是python内部定义的变量名
例子:
class Student(object):
def __init__(self,name,score):
self.__name = name
self.__score = score
def get_name(self):
print(self.__name)
if __name__ == "__main__":
a = Student('xiaoming',90)
print(a._Student__name)
print(a.get_name())
输出:
xiaoming #通过私有属性名字转换得到a.Student_name得到
xiaoming #通过定义一个函数get_name得到
None #不知道这里为什么会多一个None??????????好奇怪,先留个疑问
再来
class Student(object):
def __init__(self,name,score,height):
self.__name = name
self.__score = score
self._height = height
def get_name(self):
print(self.__name)
class Student1(Student):
def get_height(self):
print(self._height)#子类可以访问保护类