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 ...
随机推荐
- 利用trigger同步Oracle数据库
oracle不同数据库之间进行同步数据时,可以用触发器来实现,但需要数据库A访问数据库B,那么可以通过创建数据连接来实现,代码如下: CREATE DATABASE LINK dblink_test ...
- modelform 使用
modelForm (1) model的知识点: class UserInfo(AbstractUser): tel = models.CharField(max_length=32) gender ...
- 论文笔记:空间变换网络(Spatial Transformer Networks)
2015, NIPS Max Jaderberg, Karen Simonyan, Andrew Zisserman, Koray Kavukcuoglu Google DeepMind 为什么提出( ...
- Hadoop2.0环境搭建
需准备的前提条件: 1. 安装JDK(自行安装) 2. 关闭防火墙(centos): systemctl stop firewalld.service systemctl disable firewa ...
- MVC 中 注册不成功 或其他操作不成功 提示办法
在Controller中 .cs public ActionResult AddUser(User u) { …… try { …… GetInsertUser(u); // 注册 ...
- Spring Aop之Cglib实现原理详解
Spring Aop实现对目标对象的代理,AOP的两种实现方式:Jdk代理和Cglib代理.这两种代理的区别在于,Jdk代理与目标类都会实现同一个接口,并且在代理类中会调用目标类中被代理的方法,调用者 ...
- 如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
现在css3 都出来的,但是其实我由于一些原因,有些css2中都能支持的样式,我都没有使用过.我感觉我真的有必要静下心来,去看看那些东西,看看哪些以前都被忽视掉的. 今天我主要来讲三个对于我们编程经常 ...
- Android Studio开发学习 - 1. 添加Activity
1. 项目上点右键,New -> Activity -> Blank Activity 这将生成Activity的 Layout.Class .和相关的配置信息(在AndroidManif ...
- win32和x86以及x64的区别
本来是知道x86和x64的区别的. 今天突然在VS2008上看到一个win32的选项,一下子懵了,这是什么玩意. 百度之,发现答案 win32是指windows 32位的操作系统,顾名思义是支持32为 ...
- 数据结构实习 Problem H 迷宫的最短路径
数据结构实习 Problem H 迷宫的最短路径 题目描述 设计一个算法找一条从迷宫入口到出口的最短路径. 输入 迷宫的行和列m n 迷宫的布局 输出 最短路径 样例输入 6 8 0 1 1 1 0 ...