私有属性的继承特点 | 学习笔记

简介: 快速学习 私有属性的继承特点

开发者学堂课程【Python入门 2020年版私有属性的继承特点】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10388


私有属性的继承特点


内容简介

一、类方法和静态方法回顾

二、私有属性的继承特点


一、类方法和静态方法回顾

代码如下:

class Person(object) :

def _new_(cls, *args,**kwargs) :

return object._new_(cls)   //这两行重写了一个new方法

def _init__(self, name, age):

self.name = name

self.age = age

P=Person(‘张三’,18)

先写完以上,思考上述 new 方法是一个什么方法,是一个实例方法还是类方法?

此处 new 其实是一个静态方法,new 方法的代码上方省略了代码:@staticmethod

object 中查看_new_(cls,*more)该方法:

@staticmethod # known case of _new_

def _new_(cls, *more): # known special case of object._new_

""" Create and return a new object. See help(type) for accurate signat

Pass

省略的代码:

@staticmethod 可写可不写,若不写就相当于重写父类方法,若添加,可以在代码中输入 print(p)运行一下,显示结果依然可以使用

经常会省略掉


二、私有属性的继承特点

输入代码:

class Animal(object) :

def_init_(self,name,age):

self.name = name

self.age = age

def eat(self):

print(self.name + ‘正在吃东西')

def _test(self):

print(‘我是Animal类里的test方法')

class Person(Animal) :

pass

p=Person(‘’,18)

print(p.name)

如果写 printp.name)运行结果为张三

再加上 p.eat()结果就会加上 张三正在吃东西

如果再加上 p._test(),思考运行结果是否可以调用 test,运行一下,

结果显示报错:

AttributeError: ‘Person’object has no attribute ‘_test’。该 test 是一个私有方法,不能被继承

那么是否可以写为 p.Person_test()来调用?修改代码中的 pass 改为 def _demo(self):

print(‘我是 Person 里的私有方法’)

私有方法在外层调用,应该输入 p.Person_demo()来调用。

注释掉 p.Person_test(),运行结果显示为 我是 Person里的私有方法

思考那么test方法是否被继承到Person中?取消test方法的注释,运行一下,结果显示报错 AttributeError: ‘Person’object has no attribute ‘_Person_test’

没有继承下来,p.Person_demo()是自己类里定义的私有方法 ,用对象名._类名_私有方法名()来调用。p.Person_test()是父类的私有方法,子类没有继承

但是可以这样写为:

p.Animal_test(),运行结果就显示为我是 Animal 里的私有方法,可以通过 对象名._父类名_私有方法调用()

接下来看私有属性,在代码 def_init_(self,name,age)中继续输入 self._money =1000,能否通过print(p.Person_money)获取到,运行结果报错,因为它没有继承下来,找 Person 类找不到。

但是可以找到 Animal 类,修改为 print(p.Animal_money),再来运行

结果显示为1000

总结:私有属性和方法,子类不会继承

相关文章
|
Kubernetes 调度 C++
Kubernetes vs Docker Swarm:容器编排工具的比较与选择
在当今云计算时代,容器技术的应用越来越广泛。而在众多容器编排工具中,Kubernetes和Docker Swarm是两个备受关注的竞争者。本文将深入比较这两个工具的特点、优势和劣势,帮助读者更好地选择适合自己的容器编排解决方案。
|
10月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
738 2
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
258 1
|
缓存 前端开发 安全
数据同步原理
数据同步原理
337 10
数据同步原理
|
Java PHP 数据库
PHP性能优化实战指南
【6月更文挑战第27天】在Web开发的快节奏世界中,PHP作为一门广泛使用的服务端脚本语言,其性能的优劣直接影响到网站和应用的响应速度及用户体验。本文将深入探讨PHP性能优化的多个方面,从代码层面到服务器配置调优,提供一系列实用的优化策略和技巧。我们将通过具体示例来说明如何识别瓶颈、减少不必要的计算和内存消耗,以及利用各种工具进行性能监测和分析。无论你是PHP新手还是资深开发者,这篇文章都将带给你提升项目性能的实用知识。
|
机器学习/深度学习 存储 计算机视觉
特征提取
特征提取
335 3
|
SQL 数据库
IN 操作符
【7月更文挑战第14天】IN 操作符。
127 10
时间序列和ARIMA模型预测拖拉机销售的制造案例研究
时间序列和ARIMA模型预测拖拉机销售的制造案例研究
时间序列和ARIMA模型预测拖拉机销售的制造案例研究
javadoc @apiNote、@implSpe、@implNote不识别问题
javadoc @apiNote、@implSpe、@implNote不识别问题
254 0
|
缓存 Docker Windows
Docker踩坑记录
Docker 作为一项容器技术,在我们的日常开发和学习中经常用到,下面记录了使用中常见的一些问题