私有属性和私有方法
2019-06-29 本文已影响0人
Chaweys
#coding=utf-8
class Employee:
def __init__(self,name,age):
self.name=name
self.age=age
e=Employee("Vince",18)
print(e.name) #这里的e.name指实例对象 e 里的实例属性self.name
print(e.age)
Python 对于类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点:
1、通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。
2、类内部可以访问私有属性(方法)
3、类外部不能直接访问私有属性(方法)
4、类外部可以通过 "_类名__私有属性(方法)名" 访问私有属性(方法)
【注】方法本质上也是属性!只不过是可以通过()执行而已。所以,此处讲的私有属性和公有属性,也同时讲解了私有方法和公有方法的用法。
class Employee:
__company="SXT" #私有类属性
def __init__(self,name,age):
self.name=name
self.__age=age #私有(实例)属性
def __work(self): #私有方法
print("努力,奋斗")
print("年龄是{0}".format(self.__age)) #在类内部是可以自由调用私有属性的
print(Employee.__company) #在类内部是可以自由调用私有属性的,这里调用私有的类属性
e=Employee("Vince",18)
print(e.name) #这里的e.name指实例对象 e 里的实例属性self.name
#print(e.__age) #age定义成私有的属性之后,即不能直接访问了
print(e._Employee__age) #访问私有属性的格式:_类名__私有属性名
print(dir(e)) #dir函数查看对象e 存储私有属性的格式就为:['_Employee__age', '_Employee__work',...
e._Employee__work() #调用私有方法的格式:_类名__私有方法名
print(Employee._Employee__company) #外部访问私有的类属性:_类名__私有属性名