• 成员可见性,变量和方法的可见性。使用“__”开头的变量和方法为私有变量和方法
  • 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中面向对象的一些关于私有变量和继承的理解的更多相关文章

  1. python中的下划线(私有变量)

    Python用下划线作为变量前缀和后缀指定特殊变量. - "单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量:不能用"from xx ...

  2. Python中,如何初始化不同的变量类型为空值

    参考文章  Python中,如何初始化不同的变量类型为空值 常见的数字,字符,很简单,不多解释. 列表List的其值是[x,y,z]的形式 字典Dictionary的值是{x:a, y:b, z:c} ...

  3. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  4. Python中面向对象的概念

    1.语言的分类 1)面向机器 抽象成机器指令,机器容易理解.代表:汇编语言. 2)面向过程 做一件事,排除步骤,第一步做什么,第二步做什么,如果出现A问题,做什么处理,出现b问题,做什么处理.问题规模 ...

  5. Python中面向对象和类

    目录 面向对象 类的定义 类的访问 类的属性和方法 继承和多态 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 面向对象: 类(C ...

  6. python 中面向对象的概念

    原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...

  7. python中面向对象

    一.Python经典类与新类 经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类: class classics: 'def ...

  8. python中面向对象元类的自定义用法

    面向对象中的常用方法 1.instance 和 issubclass instance :判断两个对象是不是一类 issubclass :判断某个类是不是另一个类的子类 #两个常用方法的使用 clas ...

  9. python 中面向对象编程简单总结2

    1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...

随机推荐

  1. PKU 1226 Substrings(字符串匹配+暴搜KMP模板)

    原题大意:原题链接 给出n个字符串,找出一个最长的串s,使s或者s的反转字符串(只要其中一个符合就行)同时满足是这n个串的子串. 对于样例,第一组ABCD   BCDFF  BRCD最长的串就是CD; ...

  2. Mybatis 一对一、一对多、多对多

    一对一返回resultType <!-- 查询订单关联查询用户信息 resultType --> <select id="findOrderCustom" res ...

  3. C语言基础温故

    一.C语言中数组动态增长有哪些方法? 1.在原数组单元后面是没法再扩长的,因为后面的单元没法保证一定有.所以,数组原址动态增长肯定是不行的: 2.要么定义长一点的数组,要么自已把N个数组用链表串起来, ...

  4. linq分析

    例如: var sums = modellist .GroupBy(x => x.userId) .Select(group => new { Peo = group.Key, fist ...

  5. SQL学习笔记之SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解

    0x00 建表准备 相信很多人在刚开始使用数据库的INNER JOIN.LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这 ...

  6. wix toolset将 cab 打包进msi

    在***wxs中添加配置 <MediaTemplate EmbedCab="yes" /> 下面是一个简单配置:(包含写注册表) <?xml version=&q ...

  7. 20145314郑凯杰 《Java程序设计》第8周学习总结

    20145314郑凯杰 <Java程序设计>第8周学习总结 教材学习内容总结 代码已托管 第十五章 通用API ①日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 使 ...

  8. Linux简单编程学习心得

    在Linux环境下简单编程学习心得 linux编程过程 在上周的<信息安全设计基础>的课程学习中学习到了在虚拟的linux环境下简单的编程.学习过程中接触到了vim.gcc和gcd在实验楼 ...

  9. Tomcat热部署,Web工程中线程没有终止

    近期项目中,用 jenkins 热部署 web工程时,发现工程中静态持有的线程(将ScheduledExecutorService定时任务存储在静态Map中),导致不定时出现数据库访问事务关闭异常,如 ...

  10. Graph_Master(连通分量_H_Trajan+拓扑序dp)

    Graph_Master_连通分量_H 题目描述: 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条 ...