私有属性和私有方法是只希望在对象内部使用,不希望在外界被使用的属性和方法。创建格式为:
__属性名
__方法名
当私有属性和私有方法被创建以后在外界无法通过常规的方式被直接调用,但可以在对象内部任意使用。
class Demo:
def __init__(self):
self.num = 100
# 定义一个私有属性
self.__num = 200
# 定义一个私有方法,该方法中使用私有属性
def __sum(self):
return self.__num + self.num
# 定义一个方法,该方法使用私有方法
def sum(self):
sum_1 = self.__sum()
return self.__num + sum_1
d = Demo()
# print(d.__num) 该行代码会报错,无法直接在外界调用私有属性
# print(d.__sum()) 该行代码会报错,无法直接在外界调用私有方法
print(d.sum()) # 输出500,证明私有属性和方法可以在对象内部使用
其实在python中只是伪私有属性及伪私有方法,若想要在外界直接调用可以通过这样一种方式:
对象.(下划线)类名__属性或方法名;
例如:
d._Demo__num
d._Demo__sum()
class Demo:
def __init__(self):
self.num = 100
# 定义一个私有属性
self.__num = 200
# 定义一个私有方法,该方法中使用私有属性
def __sum(self):
return self.__num + self.num
# 定义一个方法,该方法使用私有方法
def sum(self):
sum_1 = self.__sum()
return self.__num + sum_1
d = Demo()
print(d._Demo__num) # 输出为:200
print(d._Demo__sum()) # 输出为:300
同时还应该注意父类的私有属性和私有方法并不能在子类中直接调用,只能通过调用父类的共有方法来间接的访问父类的私有属性和私有方法。
网友评论