2018-08-01 python学习—面向对象(私有化)
2018-08-01 本文已影响0人
随雪而世
python中类中的属性和方法的私有化:直接在属性名或者方法名前加(命名的以''开头)
属性或者方法私有:在外部不能直接使用, 可以在类的内部使用
class Person:
# 私有的类字段
__number = 61
"""人类"""
def __init__(self, name='', age=0):
self.name = name
self.__age = age
def show_age(self):
print('%d' % (self.__age - 10))
self.__run()
# 私有的对象方法,只能在类的内部调用
def __run(self): #方法名前加_
print('%s在跑' % self.name)
# 私有的类方法
@classmethod
def __get_number(cls):
print(cls.__number)
import random
class Student:
def __init__(self, name):
self.name = name
self.study_id = ''
def __creat_id(self):
return 'py1805'+ str(random.randint(1, 50)).rjust(3, '0')
def creat(self, name):
stu = Student(name)
stu.study_id = self.__creat_id()
return stu
if __name__ == '__main__':
p1 = Person('张三', 30)
p1.name = '李四'
# p1.age = 28 #_age
# print(p1.name, p1.__age)
p1.show_age() #通过内部方法查看
# print(Person.__number) #无法取得
# Person.__get_number()
# 私有化的原理:在内部在私有的名字前加了前缀'_类名'
print(p1.__dict__['_Person__age'])