首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

没有文档的Python子类,无法访问受保护的成员GetService

在Python中,如果一个类继承自另一个类,且没有提供自己的文档字符串,那么它将无法访问受保护的成员。

受保护的成员是指以一个下划线开头的成员变量或方法,它们是类的内部使用的,不建议从类的外部直接访问。继承自父类的子类,可以访问父类的受保护成员,但是如果子类没有提供文档字符串,那么无法通过子类实例直接访问受保护的成员。

这种限制是Python中的一种保护机制,目的是为了让开发者更加规范地使用类的成员,并且避免滥用受保护成员。

下面是一些关键概念和相关知识点:

  • Python文档字符串:Python中的文档字符串是类、函数或模块的第一个语句,用于描述其功能和使用方法。可以使用help()函数或__doc__属性来查看文档字符串。
  • 继承:在面向对象编程中,继承是一种机制,允许一个类从另一个类获取属性和方法。子类可以继承父类的公共成员,包括方法和属性。
  • 受保护的成员:在Python中,以一个下划线开头的成员变量或方法被认为是受保护的。这意味着它们应该被视为类的内部使用,不建议从类的外部直接访问。

在使用Python编写代码时,建议养成良好的编程习惯,为类和方法提供详细的文档字符串,以便其他开发者了解其功能和使用方法。同时,也要注意遵循Python的命名约定和保护机制,合理使用受保护的成员。

推荐的腾讯云产品: 腾讯云提供了丰富的云计算服务,以下是一些与云计算相关的腾讯云产品:

  1. 云服务器(CVM):提供安全可靠的云服务器实例,可用于托管网站、应用程序和数据库等。 产品链接:https://cloud.tencent.com/product/cvm
  2. 云数据库 MySQL 版(TencentDB for MySQL):提供稳定可靠的云数据库服务,支持高可用、备份恢复和性能优化。 产品链接:https://cloud.tencent.com/product/cdb_mysql
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于存储和管理各种类型的非结构化数据。 产品链接:https://cloud.tencent.com/product/cos
  4. 人工智能机器学习平台(AI Lab):提供机器学习的开发环境和算法模型,支持自然语言处理、图像识别等应用场景。 产品链接:https://cloud.tencent.com/product/ailab
  5. 物联网开发平台(IoT Explorer):提供设备连接管理、数据采集和应用开发的物联网解决方案。 产品链接:https://cloud.tencent.com/product/iotexplorer

这些腾讯云产品提供了丰富的功能和灵活的部署方式,可以满足不同场景下的云计算需求。请根据具体的需求选择适合的产品,并参考相应的产品文档进行使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 中使用私有成员子类

1、问题背景Python 语言中,变量名与访问器同名是一个非常好特性:self.__value = 1def value(): return self....__value但是,当我们想要子类化一个类,并访问其私有成员时,却没有一种简单方法。通常,我们希望直接操作类中原始数据对象,而无需总是使用访问器和修改器。...虽然这似乎违背了私有和公有的基本思想,但通常情况下,我们要子类类是我们自己类,我们很乐意将成员公之于子类,但不想让该类实例访问这些成员。那么,有没有一种干净方法来实现这种区别呢?...虽然私有属性在Python中并没有真正意义上私有属性,但是通常情况下,其他开发者会遵守约定,不会随意访问或修改带下划线前缀变量,以此来保护私有属性。...这样,我们就既可以保护私有属性不被随意访问,又可以像访问普通属性一样使用它。

9410

CA1047:不要在密封类型中声明保护成员

值 规则 ID CA1047 类别 设计 修复是中断修复还是非中断修复 非中断 原因 公共类型是 sealed(在 Visual basic 中为 NotInheritable),并声明了一个保护成员保护嵌套类型...此规则不报告 Finalize 方法冲突,这些方法必须遵循此模式。 规则说明 类型声明保护成员,使继承类型可以访问或重写该成员。...按照定义,不能从密封类型继承,这表示不能调用密封类型上保护方法。 对于此错误,C# 编译器会发出警告。 如何解决冲突 若要解决此规则冲突,请将成员访问级别更改为专用,或使该类型可继承。...包含特定 API 图面 你可以仅为此规则、为所有规则或为此类别中所有规则配置此选项(设计)。 有关详细信息,请参阅代码质量规则配置选项。...包含特定 API 图面 你可以根据代码库可访问性,配置要针对其运行此规则部分。

61730
  • 【C++】继承 ③ ( 继承一些重要特性 | 子类拥有父类所有成员 | 多态性 | 子类可以拥有父类没有成员 | 代码示例 )

    父类 私有成员 , 必须通过 父类 公有或保护 成员函数 访问 父类 私有成员 ; 子类 不能访问 父类 私有成员 , 并不代表 子类没有 父类 私有成员 ; 下面的 Parent...父类 私有成员 ; Child c; c.publicFunChild(); // 间接调用父类 私有成员 c.callPrivateFun(); 2、子类可以拥有父类没有成员...子类 可以 在 继承自 父类 成员变量 和 成员函数 基础上 , 定义 其它 成员变量 和 成员函数 ; 因此 , 子类 可以 拥有 父类 所没有成员变量 和 成员函数 ; 在下面的代码中...// 子类 可以访问 父类 公有成员 publicFun(); // 子类 可以访问 父类 保护成员 protectedFun...// 子类 可以访问 父类 保护成员 protectedFun(); // 任何类型继承 都不能访问 父类私有成员 //privateFun()

    57930

    【说站】java继承优缺点分析

    耦合:类与类关系。 内聚:自己完成某件事能力。 打破了封装性。 3、继承成员 继承机制引入了保护成员,提供了一个新成员访问控制级别,可以理解为公共和私有。...在继承中,子类继承了超级结构函数以外所有成员,这些成员成为子类继承成员。继承人不仅包括超级定义共有、保护和私有成员,还包括超级继承人。...在子类中,子类可以访问自己定义所有成员,也可以访问父亲共有和保护继承成员,但不能访问超级私有继承成员。 继承者在子类访问控制与其在超类中访问控制相同。...以及最初在超类中是共有成员,被子类继承后被视为共有成员;最初在超类中是保护成员,被子类继承后仍然是保护成员;最初在超类中是私有成员,被子类继承后被视为私有成员,但子类无法访问。...资料类型为子类对象无法访问子类及其父类保护成员。 以上就是java继承优缺点分析,希望对大家有所帮助。

    47720

    07. 面向对象编程(一)

    __money) # __money为私有变量,在类外部无法访问 print(cat.getMoney()) # __money为私有变量,但是可以通过定义类方法访问 运行结果: 2.4.3、保护成员...保护成员在命名时,通常使用单下划线作为前缀(如_age)。..._age) 运行结果: 但是PyCharm上是会提示你正在访问_age是保护变量,不推荐直接访问。...只有类内部才可以访问,类外部无法访问保护变量(protected)。单下划线(_xxx)命名,如_age。虽然在语法上是可以访问,但也建议通过公有方法进行访问。 特殊变量。...通过这些规范,其他开发者可以更容易地理解你代码,并且遵循这些规范有助于提高代码可维护性。同时,使用文档来描述类成员和其用途也是非常重要

    12710

    java访问控制修饰符

    二、protectedprotected修饰符表示该成员只能被同一包中其他类、接口、方法或继承自该类子类访问,外部类无法访问。...在Java中,通常将需要被子类重写或继承方法或成员使用protected修饰。...示例代码:public class Example { protected String name; // 保护成员变量 protected void doSomething() { // 保护方法...三、privateprivate修饰符表示该成员只能在本类中访问,其他类、接口和包都无法访问。在Java中,通常将需要限制访问成员使用private修饰,以保证代码封装性和安全性。...四、默认访问控制符默认访问控制符指的是在没有显式声明任何修饰符情况下,成员具有的访问权限。默认访问控制符只能在同一包中访问,外部类无法访问

    46020

    【C++】类封装 ③ ( 访问控制权限 )

    都可以访问 ; protected : 修饰 成员变量 和 成员函数 , 是 保护 , 只能在 类内部 和 子类内部 访问 ; private : 修饰 成员变量 和 成员函数 , 是 私有的...publicVar; // 公开成员变量 protected: int protectedVar; // 保护成员变量 private: int privateVar; //...: int protectedVar; // 保护成员变量 private: int privateVar; // 私有成员变量 }; 二、代码示例 - 访问控制权限 ---- 1、...public: int publicVar; // 公开成员变量 protected: int protectedVar; // 保护成员变量 private: int privateVar...私有成员变量 obj.privateVar = 10; // 访问类 保护成员变量 obj.protectedVar = 10; // 访问类 默认类型成员变量 obj.defaultVar

    15020

    Python - 面向对象(三)公共变量,保护变量,私有变量

    前言 在Python类里面,所有属性和方法默认都是公共;但Python也可以设置保护、私有类型变量or方法 保护类型变量、方法 一般称为:protected变量 #!..._protected = "子类保护实例变量" print("子类实例属性:", self...._test() 执行结果 子类实例属性: 子类保护实例变量 子类类属性: 保护变量 实例属性: 子类保护实例变量 类属性: 保护变量 子类实例对象调用类属性 子类保护实例变量 类方法中类属性...: 保护变量 类对象调用类属性 保护变量 保护方法 知识点 在变量和方法前加一个下划线 即可变成protected类型变量or方法 _ 父类protected变量,子类能继承 实例对象能直接调用...or方法 __ 子类无法访问父类私有变量、方法 私有变量只有本类内部能直接调用 But!

    1.6K20

    PHP- 复合数据类型-对象访问控制

    具体访问控制规则如下:public成员可以被任何代码访问,包括类内部、类外部和子类中。protected成员可以在类内部和子类中被访问,但在类外部无法被访问。...private成员只能在类内部被访问,包括子类中也无法访问。访问控制修饰符后面跟着属性或方法就会受到这个访问控制限制。...; // 私有属性不可以在外部访问$employee = new Employee("Alice", 30, "654321");echo $employee->showInfo(); // 可以通过子类访问保护和公共方法...在 Employee 类中,我们定义了一个 showInfo() 方法,它可以调用 Person 类中公共和保护方法来显示信息,但不能调用私有方法。...在示例代码最后,我们创建了一个 Person 对象和一个 Employee 对象,分别用来演示访问公共、保护和私有属性和方法限制。

    38720

    Python 面向对象 OOP-三大特性#学习猿地

    > 面向对象三大特性:封装,继承,多态 ## 封装 > 封装就是使用特殊语法,对成员属性和成员方法进行包装,达到保护和隐藏目的 > 但是一定注意,不能把成员全部封装死,就失去意义了 > 被封装成员主要是供类内部使用...> 被特殊语法封装成员,会有不同访问权限 #### 封装级别 ``` 封装级别     成员  ==> 公有的     _成员  ==> 保护 (约定俗成,而python没有具体实现)...    __成员 ==> 私有的           公有的 public    保护 protected    私有的 private 在类内部      OK              OK               ...特征:公有的成员可以在任何位置进行访问和操作 保护封装 定义:在成员名称前面加一个下划线 _成员名称 特征:保护成员和公有成员一样可以在任何位置进行访问,但是一般不要随便访问和操作保护成员 私有的封装...在python中并没有实现保护封装,属于开发者约定俗成。 2. python私有化封装是通过改名策略实现,并不是真正私有化 ## 继承 ### 什么是继承?

    36310

    Python 面向对象 OOP-三大特性#学习猿地

    > 面向对象三大特性:封装,继承,多态 ## 封装 > 封装就是使用特殊语法,对成员属性和成员方法进行包装,达到保护和隐藏目的 > 但是一定注意,不能把成员全部封装死,就失去意义了 > 被封装成员主要是供类内部使用...> 被特殊语法封装成员,会有不同访问权限 #### 封装级别 ``` 封装级别 成员 ==> 公有的 _成员 ==> 保护 (约定俗成,而python没有具体实现)...__成员 ==> 私有的 公有的 public 保护 protected 私有的 private 在类内部 OK OK...特征:公有的成员可以在任何位置进行访问和操作 保护封装 定义:在成员名称前面加一个下划线 _成员名称 特征:保护成员和公有成员一样可以在任何位置进行访问,但是一般不要随便访问和操作保护成员 私有的封装...在python中并没有实现保护封装,属于开发者约定俗成。 2. python私有化封装是通过改名策略实现,并不是真正私有化 ## 继承 ### 什么是继承?

    37420

    Python - 面向对象编程 - 公共属性、保护属性、私有属性

    Python也可以设置保护、私有类型变量or方法 私有类型属性、方法 在实际开发中,对象某些属性或方法可能只希望在对象内部被使用,而不希望在外部被访问到 私有属性:就是对象不希望公开访问属性...__sum) @classmethod def __sumAdd(cls, num): cls.__ 重点 子类无法访问父类私有变量、方法 私有变量只有本类内部能直接调用...伪私有属性和私有方法 其实 Python 中,并没有真正意义上私有,仍然可以在外部访问私有属性、私有方法 因为,在给私有属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到 处理方式:在名称前面加上..._类名__名称 来调用私有属性、方法,这算是一种间接调用 保护类型属性、方法 保护类型一般会称为:protect 属性,学过 Java 应该都了解 在属性和方法前加一个下划线就是 protect...,和公共变量没有什么特别大区别 总结 无论是保护型变量还是私有变量,其实在外部还是能访问,所以并不能真正控制属性访问权限

    2.1K20

    python--面向对象与模块补充,反射

    python中,私有属性可以通过__(两个下划线定),实际上一个下划线也表示私有属性,不过还是可以访问到 关于私有属性、方法——Python没有真正私有化支持,但可用下划线得到伪私有,所以尽量避免定义以下划线开头变量..."单下划线 " 开始成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供接口进行访问;不能用'from module import *'导入,类似于php...protected保护,直接通过实例化对象和子类都可以访问 class People(object): _test1 = "一个下划线私有属性" __test = '两个下划线私有属性' def..." 双下划线 " 开始是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。...模块在导入时候如果使用了,from module import * 那么私有方法不能被导入 ? ? ? 会报错 如果改为直接调用可以运行,这说明python没有绝对私有机制 ? ?

    39240

    python中 _、__、__xx__()区别及使用场景

    一般而言,我们通常会将对象属性设置为私有的(private)或保护(protected),简单说就是不允许外界访问,而对象方法通常都是公开(public),因为公开方法就是对象向外界提供接口..._Test__foo) if __name__ == "__main__": main() 在实际开发中,我们并不建议将属性设置为私有的,因为这会导致子类无法访问。...所以大多数Python程序员会 遵循一种命名惯例,就是让属性名以 单下划线 开头来表示属性是保护 ,本类之外代码在访问这样属性时应该要保持慎重。...这种做法并不是语法上规则,单下划线开头属性和方法外界仍然是可以访问,所以更多时候它是一种暗示或隐喻,让调用者知道这是不应该直接访问属性或方法,而且这样做并不影响子类去继承这些东西。...类中那些魔法方法,如__str__、__repr__等,这些方法并不是私有成员哦,虽然它们以双下划线开头,但是他们也是以双下划线结尾,这种命名并不是私有成员命名, 到此这篇关于python中 _

    85510

    【C++】继承 ⑤ ( public 公有继承 - 示例分析 | protected 保护继承 - 示例分析 | private 私有继承 - 示例分析 )

    保护继承 父类 公有成员 , 调用失败 , 因为 父类 公有成员子类 保护继承 后 , 变为子类 保护成员 , 只能在 子类内部 或 孙子类中调用 , 不可在类外部调用 ; 特别注意 :...// 私有成员只能在本类中访问 , 子类 和 类外部无法访问 //c = 0; 类外部访问 派生类 ( 子类 ) 继承 3 个变量 ; 访问 公有变量 a : 基类中公有成员 , 保护继承...保护变量 b : 基类中保护成员 , 保护继承 子类中仍是 保护成员 , 不可在类外部访问 ; // 不可访问 : 基类中保护成员 // 保护继承 子类中仍是 保护成员 , 不可在类外部访问...// 私有成员只能在本类中访问 , 子类 和 类外部无法访问 //c = 0; 类外部访问 派生类 ( 子类 ) 继承 3 个变量 ; 访问 公有变量 a : 基类中公有成员 , 私有继承...//child.a; 访问 保护变量 b : 基类中保护成员 , 私有继承 子类中变为子类 保护成员 , 不可在类外部访问 ; // 不可访问 : 基类中 保护成员 变为 派生类 私有成员

    18840

    - 类和对象之进阶(二)

    默认可见性 Scala 中默认可见性为 public,所谓默认即你没有在类或者成员前显示加 private 或 protected 可见性关键字。...公有可见性 对于公有可见性,任何作用域内都可以访问公有成员或公有类型。 Protected 可见性 对于保护可见性,用 protected 声明,保护成员对本类型、继承类型可见。...而保护类型则只对包含该类包内可见。...下面例子是关于 protected 成员: package P1 { class C1 { protected val c = 0 //< 保护可见性中,嵌套类可访问 protected...所谓作用域内私有/保护可见性,就是你可以更细粒度指定某个类或某个成员在某个作用域(可以是包或类)私有或保护可见性 成员在类和包中 private/protected 可见性 该可见性可以有16

    25720

    python3 学习笔记

    # -*- coding: UTF-8 -*- 或者 #coding=utf-8 来指定 python 有独一无二注释方式: 文档字符串, 所以注释尽量用文档字符串("""xxxx""") 如果一个类不从其他类继承..., 这些是需要深入了解 结构体 python没有结构体, 可以使用下列方式实现: 使用 struct 模块来实现, 需要了解与 c 中类型格式对照, 创建时需要指定结构体成员类型...: 只能在类内部方法中访问成员 保护成员: 只能由本类或子类访问成员 公有成员: 全局, 类内部, 外部和子类都能访问成员 方法: 类中定义函数 方法重写: 如果从父类继承方法不满足需求...# 类变量 var1 = 0 # 公有成员 _var2 = 0 # 保护成员 __var3 = 0 # 私有成员 # 构造函数, 里面可以定义实例变量, 这些变量只有在这个函数调用后才能使用...类中以一个 _ 开头命令变量或方法叫做保护成员, 以二个 _ 开头命名叫做私有成员, 以 __ 开头并以 __ 结尾为系统定义, 一般是内置成员. 使用 del 则可销毁一个类实例.

    66410

    Python:一文读懂如何使用面向对象编程

    callable(Student()) 运行结果: True 6. dict 列出类或对象中所有成员!非常重要和有用一个属性,Python自建,无需用户自己定义。...Python设计了getitem()、setitem()、delitem()这三个特殊成员,用于执行与中括号有关动作。它们分别表示取值、赋值、删除数据。...成员保护与访问机制 有些对象你不想外部访问,即使是通过调用类对象也无法访问,那就请认真学完本章节。...self.name __age = 18 # 加上双下划线就是私有变量,只能在类内部访问,外部无法访问 a = obj('zhao') a.pri() 运行结果: zhao 如果要在类中调用这个私有成员...使用私有变量可以对内部变量进行保护,外部无法改变,但是可以对它进行检测处理。 这里引申一下私有成员保护机制,使用__age对私有变量其实就是—>obj.

    93230

    c++ 之三种继承方式学习总结

    2、c++中支持三种不同基础方式 public继承:父类成员子类中保持原有访问级别 private继承:父类成员子类中变为私用成员 protected继承:父类中公有成员变为保护成员,其它成员保持不变...Parent, 所以所有的 public 成员全部变成了 protected 成员, 因此外界无法访问 // c.m_c = 100; // Child_C 私有继承自 Parent,...Parent, 所以所有的 public 成员全部变成了 protected 成员, 因此外界无法访问 c.m_c = 100; // Child_C 私有继承自 Parent, 所以所有的成员全部变成了...,如果继承关系不是public,那么子类定义对象,就无法访问父类中属性和方法了。...中支持3种不同继承方式 继承方式直接影响父类成员子类访问属性 一般而言,工程中只使用public继承方式 c++派生语言中支持public继承方式 好了,今天分享就到这里,如果文章中有错误或者不理解地方

    26020
    领券