Python中面向对象的一些关于私有变量和继承的理解
- 成员可见性,变量和方法的可见性。使用“__”开头的变量和方法为私有变量和方法
class Student(): def __init__(self, name, age):
# 构造函数
# 初始化变量的属性
self.name = name
self.age = age
self.__score = 0 # 这里是私有变量 # def __marking(self, score): # 这里使用__是方法变成私有方法
def marking(self, score): # 这里使用__是方法变成私有方法
if 0 <= score <= 100:
self.__score = score
else:
self.__score = 0
print(self.__score) stu = Student("王", 19)
# stu.marking(10) # 这里调用出错,因为是私有方法
stu.marking(10)
# print(stu.score) # 这里调用出错,因为是私有变量
stu.__score = 19 # 不报错,原因从下面的代码中,多增加了一个变量'__score': 19
print(stu.__dict__) # {'name': '王', 'age': 19, '_Student__score': 10, '__score': 19}
print(stu._Student__score) # python 将私有变量变成_Student__score形式,可以访问- 继承:`class A(B):`,A继承于B,B是A的父类。支持多继承。
class B():
sums = 0 def __init__(self, name, age):
self.name = name
self.age = age def get_name(self):
print(self.name) class A(B):
def do_homework(self):
print("hello!") stu = A("王", 20)
print(stu.sums)
print(A.sums)
print(B.sums)
print(stu.name) ------------------------------分割线---------------------------------------- class B():
sums = 0 def __init__(self, name, age):
self.name = name
self.age = age def get_name(self):
print(self.name) class A(B): def __init__(self, school, name, age):
self.school = school
# B.__init__(self, name, age) # 这里要传入self,否则报错(形参和实参对应)
super(A, self).__init__(name, age) # 使用super调用父类的方法,常用 def do_homework(self):
print("hello!") stu = A("北大", "王", 20)
print(stu.sums)
print(A.sums)
print(B.sums)
print(stu.name)
print(stu.school)- 当子类的方法和父类的方法重名,会调用子类的方法,覆盖父类的方法,可以使用`super(a, self).do_homework()`来调用重名的父类的方法
Python中面向对象的一些关于私有变量和继承的理解的更多相关文章
- python中的下划线(私有变量)
Python用下划线作为变量前缀和后缀指定特殊变量. - "单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量:不能用"from xx ...
- Python中,如何初始化不同的变量类型为空值
参考文章 Python中,如何初始化不同的变量类型为空值 常见的数字,字符,很简单,不多解释. 列表List的其值是[x,y,z]的形式 字典Dictionary的值是{x:a, y:b, z:c} ...
- Python中面向对象初识到进阶
面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...
- Python中面向对象的概念
1.语言的分类 1)面向机器 抽象成机器指令,机器容易理解.代表:汇编语言. 2)面向过程 做一件事,排除步骤,第一步做什么,第二步做什么,如果出现A问题,做什么处理,出现b问题,做什么处理.问题规模 ...
- Python中面向对象和类
目录 面向对象 类的定义 类的访问 类的属性和方法 继承和多态 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 面向对象: 类(C ...
- python 中面向对象的概念
原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...
- python中面向对象
一.Python经典类与新类 经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类: class classics: 'def ...
- python中面向对象元类的自定义用法
面向对象中的常用方法 1.instance 和 issubclass instance :判断两个对象是不是一类 issubclass :判断某个类是不是另一个类的子类 #两个常用方法的使用 clas ...
- python 中面向对象编程简单总结2
1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...
随机推荐
- Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决
一.问题回顾 线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题. 2018-05-14 20:01:32.810 ERR ...
- 一个简单的ssm项目
准备说明jdk.tomcat.idea.mave配置请看我前两篇,这里说下mysql以及我的mysql图像化工具 数据库 项目概览 项目构建--------搭建一个简单的mave的web项目,构建步骤 ...
- WWDC 2017 苹果开发者大会
1.更新了系统固件 iOS 11 macOS High Sierra watchOS 4 tvOS 11 2.更新了硬件以及新设备 升级了 iMac 以及 iMac Pro 升级了 MacBook ...
- The type javax.http.HttpServletRequest cannot be resolved.It is indirectly 解决办法
原因:项目中缺少servlet-api.jar文件. 解决办法:将E:\tomcat\apache-tomcat-6.0.24\lib下的servlet-api.jar拷贝到项目中,然后编译即可.(根 ...
- PHP中构造函数和析构函数解析
构造函数 void __construct ([ mixed $args [, $... ]] ) PHP 5 允行开发者在一个类中定义一个方法作为构造函数.具有构造函数的类会在每次创建新对象时先调用 ...
- python---自动群发邮件
生活中我们经常发送邮件,那么我们能不能用Python写一个自动发送邮件的功能呢?答案是肯定的!!! 开始实现功能之前我们需要开启我们邮箱的 IMAP/SMTP功能,我们先了解一下什么是IMAP/SMT ...
- 在MySQL中使用explain查询SQL的执行计划
1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MyS ...
- mysql-community-server安装完后不知道root密码
修改方法: service mysqld stop mysqld_safe --skip-grant-tables & mysql -u root use mysql; update user ...
- DDR4中的so-dimm 和component
so-dimm :Small Outline Dual In-line Memory Module (小型双列直插式内存模块) component:直接焊接的ddr4芯片
- # fabirc 配置多组服务器 密码与密钥一起使用 key_filename的设置
环境说明 myv myv2 是配置在/etc/hosts 的两台 虚拟机 虚拟机ip. 参考英文文档 官方文档的例子不是给的很详细.. http://docs.fabfile.org/en/1.13/ ...