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 ...
随机推荐
- Tfs更新 TfsConfig
Start TfsJobAgent TfsServiceControl unquiesce 更新serviving状态 TfsConfig diagnose /scope:updates TfsCon ...
- ACM-ICPC 2018 焦作赛区网络预赛 F. Modular Production Line (区间K覆盖-最小费用流)
很明显的区间K覆盖模型,用费用流求解.只是这题N可达1e5,需要将点离散化. 建模方式步骤: 1.对权值为w的区间[u,v],加边id(u)->id(v+1),容量为1,费用为-w; 2.对所有 ...
- Python日期字符串比较
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些 ...
- js中获取时间戳
function conver(){ var date = new Date(); var year = date.getFullYear() var month=date.getMonth()+1; ...
- laravel 图片上传 ajax 方式
laravel 图片上传 //后台轮播图上传 $("#img-upload").on('submit',function(e){ e.preventDefault(); var f ...
- linux搭建svn服务并手动同步代码到web目录和自动更新
1.安装svn服务端 yum -y install subversion 2.查看安装路径等信息 rpm -ql subversion 3.查看svn帮助信息 svn help 4.创建svn版本库目 ...
- 20145302张薇《Java程序设计》第五周学习总结
20145302 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 try catch JVM会先尝试执行try区块中的内容,若发生错误且与catch后面的类型相符,则执行ca ...
- Linux文件系统学习(一)之相关概念⭐⭐⭐
“一切皆是文件”是 Unix/Linux 的基本哲学之一.不仅普通的文件,目录.字符设备.块设备.套接字等在 Unix/Linux 中都是以文件被对待:它们虽然类型不同,但是对其提供的却是同一套操作界 ...
- [BZOJ4010]菜肴制作
Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...
- iOS日常学习 - 如何配置.gitignore文件
文章为转载学习,原文地址 为什么要配置.gitigore 在我们使用git的过程当中,不是任何文件都需要commit到本地或者远程仓库的,比如一些三方库文件. 那么作为一个git新手,很多人不知道如何 ...