本质区别是self.name = name 可以 实例.name 外部访问。
这个不是私有属性
self._name =name 不可以 外部访问
这个是私有属性
# -*- coding:utf-8 -*-
class Student(object):
def __init__(self, name, grade):
self.name = name
self.grade = grade
def print_grade(self):
print(f"{
self.name}'s grade is {
self.grade}")
s = Student("Tom", 8)
s.print_grade()
# -*- coding:utf-8 -*-
class Student(object):
def __init__(self, name, grade):
self._name = name
self.grade = grade
s = Student('Tom', 8)
s.print_grade()
结果报错!
使用原则:
在类的内部访问变量的时候用下划线"_"
其他类要访问这个类的变量时用"."