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 ...
随机推荐
- 97. Interleaving String(字符串的交替连接 动态规划)
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...
- Redhat 7.4更新为Centos7的yum并安装docker-ce
以下命令请在root下执行 #删除原有的yum rpm -qa|grep yum|xargs rpm -e --nodeps #install centos yum #wget http://mirr ...
- spark[源码]-sparkContext详解[一]
spark简述 sparkContext在Spark应用程序的执行过程中起着主导作用,它负责与程序和spark集群进行交互,包括申请集群资源.创建RDD.accumulators及广播变量等.spar ...
- head中的title显示在body中
今天遇到一个问题,就是title中的内容会显示在body中 <head> <title>324234</title> </head> 网上搜了一下是说编 ...
- SQL学习笔记之MySQL查询的三层解析
Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...
- Django学习笔记之uWSGI详解
WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义 ...
- 20145329《Java程序设计》实验四总结
实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 1.搭建Android环境 2.安装Android,核心是配置JDK. ...
- Docker 的一些使用心得
Docker 的使用心得 预备知识·必备· bash(bsd) Net ,ip know hot to search in Google and Baidu 安装 一般找一个不错的网络环境...不然玩 ...
- linux-android(任务处理)
1.开辟任务内存 2.设置每个任务优先级 ,,
- Pycharm安装Python第三方库
转自:http://blog.csdn.net/qiannianguji01/article/details/50397046 除了使用easy_insatll和pip工具安装Python第三方库外还 ...