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

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

开发者学堂课程【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

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

相关文章
|
1月前
|
JavaScript
什么是原型链?如何继承?
什么是原型链?如何继承?
33 0
|
7月前
用原型链的方式写一个类和子类
用原型链的方式写一个类和子类
25 0
|
1月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
28 0
|
1月前
|
编译器 C++
【继承】初步了解C++继承
【继承】初步了解C++继承
|
1月前
面向对象编程:类、对象、继承与多态
面向对象编程:类、对象、继承与多态
17 0
|
1月前
|
JavaScript 前端开发
js继承的超详细讲解:原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承、class继承
js继承的超详细讲解:原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承、class继承
88 0
|
10月前
继承之原型链继承
继承之原型链继承
39 0
原型链继承: 原理:将父类的实例作为子类的原型
原型链继承: 原理:将父类的实例作为子类的原型
|
1月前
|
Java 编译器
【JAVA面向对象编程】--- 探索子类如何继承父类
【JAVA面向对象编程】--- 探索子类如何继承父类
22 0
|
编译器 数据安全/隐私保护 C++
【六、继承】多继承、继承中的构造函数和析构函数、类成员访问控制
【六、继承】多继承、继承中的构造函数和析构函数、类成员访问控制
130 0
【六、继承】多继承、继承中的构造函数和析构函数、类成员访问控制