Python类super()及私有属性原理解析
super()有参数写法:
# 1.定义父类 class A(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) class C(A): def __init__(self): self.num = 2 def info_print(self): print(self.num) super(C, self).__init__() super(C, self).info_print() # 2. 定义子类,继承父类 class B(C): def __init__(self): self.num = 3 def info_print(self): self.__init__() print(self.num) def print_A(self): A.__init__(self) A.info_print(self) def print_C(self): C.__init__(self) C.info_print(self) def print_AC(self): super(B, self).__init__() super(B, self).info_print() b = B() b.print_AC()
super()用于调用父类的方法
无参写法:
super().__init__()
super().info_print()
使用super()方法可以自动查找父类,查找顺序遵循__mro__类属性的顺序
私有属性与方法
设置私有极限的方法:在属性名和方法名前面加上两个下划线__
设置之后设置的实例属性或实例方法不继承给子类
获取和修改私有属性:
在类中添加函数:
def get_money(self): return self.__money def set_money(self, money): self.__money = money
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
实例讲解Python中的私有属性
在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 复制代码 代码如下: #! encoding=UTF-8 class A: def __init__(self): # 定义私有属性 self.__name = "wangwu" # 普通属性定义 self.age = 19 a = A() # 正常输出 print a.ag
-
解决python super()调用多重继承函数的问题
当类间继承关系很简单时,super()的使用很简单. class A(object): def __init__(self): print('a') class B(A): def __init__(self): super(B, self).__init__() print('b') b = B() 输出结果: a b 当一个类继承多个类时,问题就复杂起来了,请看下例: class A(object): def __init__(self): print('a') class B(object
-
深入理解Python中的super()方法
前言 python的类分别有新式类和经典类,都支持多继承.在类的继承中,如果你想要重写父类的方法而不是覆盖的父类方法,这个时候我们可以使用super()方法来实现 python语言与C++有相似的类继承,在类定义时,python中会自定义第一个self,类似C++中this指针,指向对象自身. python简单的类举例: >>> class hello(object): ... def print_c(): ... print"hello world!" >&g
-
python3中类的继承以及self和super的区别详解
python中类的继承: 子类继承父类,及子类拥有了父类的 属性 和 方法. python中类的初始化都是__init__().所以父类和子类的初始化方式都是__init__(),但是如果子类初始化时没有这个函数,那么它便调用父类的__init__():如果实现了这个函数,就会覆盖父类的初始化函数.如果继承父类的__init__(),就需要在子类中显示调用这个函数.实现如下: class Animal(object): def __init__(self): self.name = "我是父类&
-
使用 Supervisor 监控 Python3 进程方式
首先说明,Supervisor 只能安装在 Python 2.x 环境中! 但是基本上所有的 Linux 都同时预装了 Python 2.x 和 Python 3.x 版本,并且调用 python 命令时默认运行的 Python 2,运行 Python 3 只需要 调用 python3 即可. 博主的 CentOS 上预装了 Python 2.7 和 Python 3.5(后升级到了 3.7),并且将 Python 命令默认链接到 Python 3.7. 因此博主的环境是 python : py
-
python类中super() 的使用解析
描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复调用(钻石继承)等种种问题. MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表. 语法 以下是 super() 方法的语法: super(type[, object-or-type]) Python中类的初始化都是__init__(), 所以父类和子类的初始化方式都是__init_
-
python里运用私有属性和方法总结
如何在PYTHON里运用私有属性和方法 class File: def __init__(self, name): self.name = name self.code = "ABCDEF" file_A = File("file_A") #假设我们有一个类,叫做文件类,设置一个对象file_A. file_A.code #如果直接调用属性,是可以看到属性里面有什么,但是如果这是个机密的密码不能公布,是不能这么处理的. class File: def __init_
-
Python类super()及私有属性原理解析
super()有参数写法: # 1.定义父类 class A(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) class C(A): def __init__(self): self.num = 2 def info_print(self): print(self.num) super(C, self).__init__() super(C, self).info_print() #
-
Python类及获取对象属性方法解析
1.类外面添加对象属性 class Washer(): def wash(self): print('do some laundry stuff') haier1 = Washer() #添加属性,对象名.属性名 = 值 haier1.width = 400 haier1.height = 500 对象属性既可以在类外面添加和获取,也可以在类里面添加和获取 在类外面获取对象属性: 在上方代码上添加: print(f'洗衣机宽度为{haier1.width}') print(f'洗衣机高度为{ha
-
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Python:为什么类中的私有属性可以在外部赋值并访问? 问题引入 在慕课网上学习Python**类中的私有属性**的时候,看到了一个同学的提问: 将count改为__count,为什么实例变量在外部仍然可以修改__count?这里print p1.__count可以打印出100 class Person(object): __count = 0 def __init__(self, name): Person.__count = Person.__count + 1 self.name = n
-
python @propert装饰器使用方法原理解析
这篇文章主要介绍了python @propert装饰器使用方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先,@propert的作用是把类中的方法『变成』了属性,方便通过实例访问.propert可以有两种用法:可以把一个方法变成只读属性:可以对一些属性进行过滤. 想象这样一个场景,在实例化一个类之后,需要对类的一个属性进行赋值,这时候是没有对属性属性被赋予的值进行判断的,如果属性被赋予了一个不合适的值,那么代码在后面执行的时候就会
-
详解python的super()的作用和原理
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递. 今天我们介绍的主角是super(), 在类的继承里面super()非常常用, 它解决了子类调用父类方法的一些问题, 父类多次被调用时只执行一次, 优化了执行逻辑,下面我们就来详细看一下. 举一个例子: class Foo: def bar(self, message): print(message) >>> Foo(
-
Python实现简单的"导弹" 自动追踪原理解析
自动追踪算法,在我们设计2D射击类游戏时经常会用到,这个听起来很高大上的东西,其实也并不是军事学的专利,在数学上解决的话需要去解微分方程, 这个没有点数学基础是很难算出来的.但是我们有了计算机就不一样了,依靠计算机极快速的运算速度,我们利用微分的思想,加上一点简单的三角学知识,就可以实现它. 好,话不多说,我们来看看它的算法原理,看图: 由于待会要用pygame演示,他的坐标系是y轴向下,所以这里我们也用y向下的坐标系. 算法总的思想就是根据上图,把时间t分割成足够小的片段(比如1/1000,这
-
python基础知识之私有属性和私有方法
私有权限 面向对象三大特性:封装.继承.多态 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理: 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了: 对类的属性和方法增加 访问权限控制. 私有权限:在属性名和方法名 前面 加上两个下划线 __ 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问: 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问: 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用.
-
Python编程super应用场景及示例解析
目录 一.什么是super 三.super的常用使用场景 一.什么是super 1.super也是一个类,是的.他不是一个方法也不是一个内置的关键字. class A: pass print(type(super(A))) 输出结果 <class 'super'> 直接通过查看super的源码也可以看出它是一个类 另外,网上很多文章讲解super就是用来调用父类方法的,这也是一个错误的观点! 假如我们有下面这样一个例子: class A: def __init__(self): print(&
-
Python中关于面向对象私有属性方法的详细讲解
目录 1.私有属性和私有方法 私有属性: 私有方法: 类部调用私有属性和私有方法 子类不能继承父类私有属性和方法 实例属性(对象属性) 通过实例(对象)去修改类属性 2.修改私有属性的值 3.类属性和实例属性 4.类方法和静态方法 类方法: 静态方法: 实例方法 5.__new__方法 6.单例模式 福利 1.私有属性和私有方法 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理: 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了: 对类的属性和方法增加 访问权限控
-
Python面向对象程序设计之私有属性及私有方法示例
本文实例讲述了Python面向对象程序设计之私有属性及私有方法.分享给大家供大家参考,具体如下: 如果有一个对象,当需要对其进行修改属性时,有2种方法: (1)对象名.属性名=数据---->直接修改 (2)对象名.方法名()----->间接修改 为了更好的保障属性安全,不能随意修改,一般处理方式为: (1)将属性定义为私有属性 (2)添加一个可以调用的方法,供调用,也就是间接调用属性 首先我讲解下私有属性的例子: 1.下面这个是一个错误的例子: class People(object): de
随机推荐
- Python中__name__的使用实例
- document.forms用法示例介绍
- 数据库查询优化(主从表的设计)
- jquery动态增加text元素以及删除文本内容实例代码
- 放弃 Python 转向 Go语言有人给出了 9 大理由
- mac下使用brew配置环境的步骤分享
- 一个数据采集类
- Python 分析Nginx访问日志并保存到MySQL数据库实例
- AJAX简单异步通信实例分析
- 使用CSS和jQuery模拟select并附提交后取得数据的代码
- js获取当前年月日-YYYYmmDD格式的实现代码
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
- boostrapTable的refresh和refreshOptions区别浅析
- jQuery设置div一直在页面顶部显示的方法
- JavaScript性能陷阱小结(附实例说明)
- 详解Node.js包的工程目录与NPM包管理器的使用
- 解析C++中多层派生时的构造函数及一些特殊形式
- Docker中配置国内镜像设置
- iOS中解决Xcode9的Log日志无法输出中文的问题小结
- mysql 8.0.13手动安装教程