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 ...
随机推荐
- 带宽、流量、CDN
1.啥叫带宽? 1.1 带宽的概念: 在网络中的带宽往往是指一个固定的时间内,能通过的最大位数据,即数据传输率.带宽是一个计量单位,用来计量单位时间内传输的数据量的多少. 1.2 计量单位: 这个数据 ...
- 263. Ugly Number(判断是否是丑数 剑指offer34)
Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers ...
- httpfs的使用
在项目中使用到hdfs作为存储,为了在不同的节点加载hdfs上的数据,我们使用nfsv3服务,在客户端使用 root来mount hdfs上的数据到本地,然后把本地的数据发到hdfs上,因为这个我们的 ...
- Java中什么时候使用extends,什么时候使用implements?
1.Extends 是实现单继承一个类的关键字,通过使用extends来显示的指明当前类继承的父类,只要那个类不是声明final或者那个类定义为abstract的就能继承.基本声明格式是 [修饰符] ...
- 分布式远程服务调用(RPC)框架
分布式远程服务调用(RPC)框架 finagle:一个支持容错,协议无关的RPC系统 热门度(没变化) 10.0 活跃度(没变化) 10.0 Watchers:581 Star:6174 Fork: ...
- XPath Checker 和 firebug 插件使用
安装插件: 1.firebug 2.FirePath 3.xpath finder 4.XPath Checker XPath Checker 下载安装 https://addons.mozilla. ...
- RenderScript多输入参数
https://stackoverflow.com/questions/20783830/how-to-use-renderscript-with-multiple-input-allocations ...
- 简单的linux压力测试工具webbench
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd we ...
- [pixhawk笔记]7-MAVLink添加自定义消息
前一篇学习了uORB,用于px4中各个模块的进程间通信,下来学习MAVLink,用于飞控和地面站之间的通信.教程中主要给出了使用MAVLink的发送和接收消息的方法.完整的MAVLink消息列表见该网 ...
- 生产者消费者JAVA实现
三种实现方式: 1. Object对象的wait(),notify(),加synchronize. 2. Lock的await(),signal(). 3. BlockingQueue阻塞队列. Ob ...