类的封装

#封装:区分内外,使得外部不能直接看到内部具体信息,但内部可以正常看到
class People:
    _star = "earth"      #在类中以单下划线开头的属性,按照约定是作为隐藏的属性,为私有的,类的外部是不应该调用的
    __country = "china"   #在类中以双下划线开头的属性,Python会自动重命名为: _类名__属性名
    def __init__(self,id,name,age,salary):
        self.id = id
        self.name = name
        self.age = age
        self.salary = salary
    def get_id(self):
        print("我是私有方法,找到的id是%s" %self.id)
    def get_country(self):       #为外部提供一个接口函数,用来调用被隐藏的属性
        print(self.__country)

p1 = People("123123","sjy",25,10000000)
print(p1._star)    #虽然约定是不被外部调用,但实际是可以调用的,这是个行为约定,而不是系统强制
print(p1._People__country)  #以双下划线开头的属性,会自动重命名

"""
封装:区分内外,将对象的信息隐藏在对象内部,将其私有化,外部不能直接访问调用,而是通过类方法调用
    但Python不像其他语言,它并没有实质性的隐藏,而是通过以双下划线开头命名属性名的方式,进行相对隐藏
"""
多态:不同对象使用相同方法实现不同结果
使用方式:通过继承基类的方法,子类调用这个方法,多个子类都可以继承基类方法,并都可以调用这个方法
posted @ 2019-05-10 00:45  saber゛  Views(699)  Comments(0)    收藏  举报