ad

《Python3快速入门与实战》_系统全面带领你学会Python_6.4 访问权限

admin 119 2023-10-19

【摘要】 本书摘自《Python3快速入门与实战》一书中第6章,第4节,由肖冠宇、杨捷等编著。

6.4 访问权限

熟悉 Java、C++ 等面向对象编程语言的同学对访问权限应该比较熟悉,在 Java 和 C++ 中,公共访问权限使用 public 关键字修饰,私有访问权限使用 private 关键字修饰。但是在 Python 中,类的属性和方法的访问权限不需要任何关键字修饰,只需要在属性或者方法名前 添加两个下划线“__”即为私有的访问权限,反之都是公共访问权限。具有私有访问权限的 属性和方法只能在类内部访问,外部不能访问。

例6- 7 由于狗的年龄通常在1岁到20岁之间,为了防止外部对年龄属性随意修改设 置非法年龄,将Dog 类的年龄属性设置为私有属性,通过内部私有方法设置年龄属性值(源 代码位置: chapter06/6.4 访问权限.py)。

《Python3快速入门与实战》_系统全面带领你学会Python_6.4 访问权限

案例代码如下:

class Dog:

def i n it self;name):

self.name = name

self age=1# 私有属性

#私有方法,用于设置年龄

def set age(self,age):

self age = age

#设置名字和年龄属性

def set info(self,name,age):

#如果传入的名字不是空字符串,则给对象设置新的名字

if name!="":

self.name =name

#合法年龄是1岁到20岁

if age>0 and age<=20:

#调用私有方法设置年龄

self set age(age)

else:

print("年龄设置失败,非法年龄!")

def get info(self):

#在函数内访问私有属性 age"

print("我的名字是,我现在}岁。".format(self.name,self age))

wangcai =Dog("旺财")

wangcai.get info()

print("***我长大了***")

#给旺财设置新的年龄

wangcai.set info("",10)

wangcai.get info()

运行结果如下:

我的名字是旺财,我现在1岁。

***我长大了***

我的名字是旺财,我现在10岁。

解析:Dog 类内部的 get info 方法获取到了私有属性 age 的值,在 set jinfo 方法内调用 了私有方法 set age, 成功设置了私有属性 age 的值。说明具有私有权限的属性和方法在 类内部是可以被访问的。

例6-8 在类外部访问私有属性(源代码位置: chapter06/6.4 访问权限.py)。 案例代码如下:

wangcai=Dog("旺财")

print("我的名字是{},我现在{}岁。"format(wangcai.name,wangcai. age))

运行结果如下:

AttributeError:'Dog' object has no attribute ' age'

解析:在类外部试图通过实例对象访问私有属性 age 时,在程序执行时会报 AttributeError 异常,提示 Dog 实例对象没有 age 属性,证明在类外部无法访问私有属性,

同理私有方法在类外部也无法访问。

6.5 继承

面向对象编程带来的好处之一是代码重用,通过继承机制可以很好地实现代码重用。在 程序中继承描述了不同类之间,类型与子类型的关系。比如,在现实世界中猫和狗都属于动 物类,它们都具备动物的吃饭、喝水、移动等特征。那么在程序中可以把现实世界中的猫和 狗抽象为猫类和狗类,它们都继承自动物类。那我们称动物类为父类,猫类和狗类为动物类 的子类。

6.5.1 单继承

所谓单继承就是子类只继承自一个父类。

单继承类定义格式: class Son(Father)

单继承的特点:

● 子类只继承自一个父类,在定义子类时,子类类名后添加一个小括号,小括号中填 写父类的类名。

● 子类只会继承父类的非私有属性和非私有方法。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Python编程从0到1 视频教学版》_深入Python设计的本质_1.6.7 格式化字符串
下一篇:《Excel财务日常数据与实例讲解》_从理论到实践的一大步_1.1.1 常用的链接引用函数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×