本人CSDN博客专栏:https://blog.csdn.net/yty_7
Github地址:https://github.com/yot777/Python-Primary-Learning
8.3 私有属性和私有方法
私有属性:两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问。
私有属性语法: __属性名
在类内部的方法中使用该属性的写法是self.__属性名
私有方法:两个下划线开头,声明该方法为私有方法,不能在类外部调用。
私有方法语法: __方法名
在类内部调用该方法的写法是self.__方法名
Python私有属性举例 :
class Dog:
#公有属性
types = '泰迪'
name = '小黑'
#私有属性
__hair = '棕色'
dog1=Dog()
print(dog1.types)
print(dog1.name)
print(dog1.hair)
运行结果:
泰迪
小黑
Traceback (most recent call last):
File "335.py", line 16, in <module>
print(dog1.hair)
AttributeError: 'Dog' object has no attribute 'hair'
报错原因:dog1对象无法访问Dog类的私有属性hair
如果在类外部需要访问私有属性,需要在类内部先用一个setter方法取得私有属性的值,再用一个getter方法返回该属性的值,最后在类外部调用getter方法。
Python访问私有属性举例 :
class Dog:
#公有属性
types = '泰迪'
name = '小黑'
age = 3
#私有属性
__hair = '棕色'
def set_hair(self): #访问类的私有属性需要定义一个getter/setter函数对
self.__hair='棕色'
def get_hair(self):
return self.__hair
dog1=Dog()
print(dog1.types)
print(dog1.name)
print(dog1.get_hair())
运行结果:
泰迪
小黑
棕色
Java访问私有属性举例:
//Dog类
public class Dog {
public String types = "泰迪";
public String name = "小黑";
public int age = 3;
//私有属性
private String hair = "棕色";
public void setHair(String hair) {
this.hair = hair;
}
public String getHair() {
return hair;
}
}
DogTest类
public class DogTest {
public static void main(String[] args) {
Dog dog1 = new Dog();
System.out.println(dog1.types);
System.out.println(dog1.name);
System.out.println(dog1.getHair());
}
}
运行结果:
泰迪
小黑
棕色
参考教程:
廖雪峰的Python教程
https://www.liaoxuefeng.com/wiki/1016959663602400
廖雪峰的Java教程
https://www.liaoxuefeng.com/wiki/1252599548343744
Python3 教程 | 菜鸟教程
https://www.runoob.com/python3/
如果您觉得本篇本章对您有所帮助,欢迎关注、评论、点赞!Github欢迎您的Follow、Star!