概述
Python中没有像C++中public和private这些关键字来区别公有属性和私有属性。它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。
class Plane(object):
def __init__(self):
self.mA = 100
self.mB = 200
self.__mC = 300
p = Plane()
但是类的方法可以封装__私有属性,如下可以通过Student.get_name访问self.__name
class Student(object): # 类名的括号里写继承的类,如果没有则写object,这是所有类都要继承的类
school = '清华大学' # 直接在类中定义的属性为类属性,归Student类所有,所有实例都可以访问到,但是与java的静态变量不同,如果一个实例改变了school的值,那么这个新值就生效,且只对这一个实例生效
def __init__(self, name, score): # 只要是class中定义的函数,第一个参数都要写self,并且调用时第一个参数都不必传 # init 是特殊函数,在创建类时会调用,相当于java的构造函数 self.__name = name # 可以直接self.新的变量名,注意,两个下划线开头的变量名为私有变量,不允许外部访问,但可以通过get和set方法访问和赋值 self.__score = score # 以两个下划线开头且以两个下划线结尾的变量为特殊变量,特殊变量不是私有变量,允许外部访问,因此起变量名时不要起成这种特殊变量的格式
def get_name(self): return self.__name
def get_score(self): return self.__score
def set_score(self, score): if 0 <= score <= 100: self.__score = score else: raise ValueError('bad score') # 手动抛出异常
def get_grade(self): if self.__score >= 90: return 'A' elif self.__score >= 60: return 'B' else: return 'C'
最后
以上就是端庄滑板为你收集整理的python中属于私有属性的是_Python中的私有属性的全部内容,希望文章能够帮你解决python中属于私有属性的是_Python中的私有属性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复