私有属性和方法
私有属性和方法
在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到
私有属性就是对象不希望公开的属性
私有方法 就是对象不希望公开的 方法
定义方式
在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法
私有方法,在外界不能直接被调用
伪私有属性和私有方法
Python 中,并没有真正意义的私有
在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问
处理方式:在名称前面加上_类名→类名_名称
提示:在日常开发中,不要使用这种方式,访问对象的私有属性或私有方法
Anna =Girl("小美")
Anna._Girl__secret()
print(Anna._Girl__age)
print(Anna)
class Girl:
# 定义属性
def __init__(self, name):
self.__name1 = name
self.__age = 18 # 如果希望属性不能在 外部被调用,可以定义该属性为私有 属性
def __secret(self): # 如果希望方法不能在外部被调用,可以定义该方法为 私有方法
print(f"{self.__name1}的年龄是{self.__age}")
xiaomei = Girl("小美")
""" 对象不能在类的外部 访问私有属性 调用私有方法
print(xiaomei.__age) # 对象访问属性
xiaomei.__secret() # 对象调用方法
"""
print(xiaomei._Girl__age) # 伪私有属性和方法 : 通过这样的方式,还是能够调用 私有方法,访问到私有属性,
# 但是不推荐
xiaomei._Girl__secret()
单继承
面向对象三大特性
1.封装根据职责将属性和方法封装到一个抽象的类中
2.继承实现代码的重用,相同的代码不需要重复的编写
3.多态不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度
继承的概念:子类拥有父类的所有的方法和属性
继承的语法
class 子类名(父类名):
pass
子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发
子类中应该根据职责,封装子类特有 属性和方法
专业术语
Dog类是Animal 类的子类,Animal类是Dog类的父类,Dog类从Animal类继承
Dog 类是Animal 类的派生类,Animal 类是Dog 类的基类,Dog类从Animal类派生
继承的传递性
C