杨桃的Python基础教程——第8章:Python类和对象(三)私有属性和私有方法

本人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!
 

发布了25 篇原创文章 · 获赞 3 · 访问量 2156

猜你喜欢

转载自blog.csdn.net/yty_7/article/details/104206263
今日推荐