Ⅰ 请教各位python类的私有方法不能在子类方法中覆盖吗
Base类里的self.__a()实际是self._Base__a()而且__开头的本来就是表示private,private是不可继承的[
本帖最后由
3227049
于
2007-9-23
15:53
编辑
]
Ⅱ python的三大特征
第一点:封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,在Python中用双下线开头的方式将属性设置成私有的。
拥有三个好处:将变化隔离,便于使用,提高复用性,提高安全性。
第二点:继承
继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又被称为基类或超类,新建的类称为派生类或子类。即一个派生类继承基类的字段和方法,继承也允许把一个派生类的对象作为一个基类对象对待。
第三点:多态
一种事物的多种体现形式,函数的重写其实就是多态的一种体现。Python中,多态指是父类的引用指向子类的对象。
实现多态的步骤:
1. 定义新的子类;
2. 重写对应的父类方法;
3. 使用子类的方法直接处理,不调用父类的方法;
多态的好处:
1. 增加了程序的灵活性;
2. 增加了程序的可扩展性。
Ⅲ python中什么是继承
python继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
Ⅳ python类中属性方法的事件
1普通方法:直接用self调用的方法。
2私有方法:__函数名,只能在类中被调用的方法。
3属性方法:@property,将方法伪装成为属性,让代码看起来更合理。
4特殊方法(双下划线方法):以__init__为例,是用来封装实例化对象的属性,只要是实例化对象就一定会执行__init方法,如果对象子类中没有则会寻找父类(超类),如果父类(超类)也没有,则直接继承object(python 3.x)类,执行类中的__init__方法。
5类方法:通过类名的调用去操作公共模板中的属性和方法。
6静态方法:不用传入类空间、对象的方法, 作用是保证代码的一致性,规范性,可以完全独立类外的一个方法,但是为了代码的一致性统一的放到某个模块(py文件)中。
Ⅳ python属性可以继承吗继承
python属性可以继承,但是不支持私有继承。
继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法。继承实现了代码的重用。重用已经存在的数据和行为,减少代码的重新编写,python在类名后用一对圆括号表示继承关系, 括号中的类表示父类,如果父类定义了__init__方法,则子类必须显示地调用父类的__init__方法,如果子类需要扩展父类的行为,可以添加__init__方法的参数。
Ⅵ Python中继承的理解与运用
9.5. 继承
当然,如果一种语言不支持继承就,“类”就没有什么意义。派生类的定义如下所示:
class DerivedClassName(BaseClassName):
命名 BaseClassName (示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:
class DerivedClassName(modname.BaseClassName):
派生类定义的执行过程和基类是一样的。构造派生类对象时,就记住了基类。这在解析属性引用的时候尤其有用:如果在类中找不到请求调用的属性,就搜索基类。如果基类是由别的类派生而来,这个规则会递归的应用上去。
派生类的实例化没有什么特殊之处: DerivedClassName() (示列中的派生类)创建一个新的类实例。方法引用按如下规则解析:搜索对应的类属性,必要时沿基类链逐级搜索,如果找到了函数对象这个方法引用就是合法的。
派生类可能会覆盖其基类的方法。因为方法调用同一个对象中的其它方法时没有特权,基类的方法调用同一个基类的方法时,可能实际上最终调用了派生类中的覆盖方法。(对于 C++ 程序员来说,Python 中的所有方法本质上都是 虚 方法。)
派生类中的覆盖方法可能是想要扩充而不是简单的替代基类中的重名方法。有一个简单的方法可以直接调用基类方法,只要调用: BaseClassName.methodname(self, arguments)。有时这对于客户也很有用。(要注意只有 BaseClassName 在同一全局作用域定义或导入时才能这样用。)
Python 有两个用于继承的函数:
函数 isinstance() 用于检查实例类型: isinstance(obj, int) 只有在 obj.__class__ 是 int 或其它从 int 继承的类型
函数 issubclass() 用于检查类继承: issubclass(bool, int) 为 True,因为 bool 是 int 的子类。
然而, issubclass(float, int) 为 False,因为 float 不是 int 的子类。
Ⅶ python 类继承 私有方法和私有属性
这种方式调用是可以的,不能直接调用。
也就是在class B 中不能直接像这样调用
Ⅷ python属性可以继承吗继承
python属性可以继承,但是不支持私有继承。
继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所有公有实例变量和方法。继承实现了代码的重用。重用已经存在的数据和行为,减少代码的重新编写,python在类名后用一对圆括号表示继承关系,
括号中的类表示父类,如果父类定义了__init__方法,则子类必须显示地调用父类的__init__方法,如果子类需要扩展父类的行为,可以添加__init__方法的参数。
Ⅸ Python中的继承是什么意思
继承是子类复用父类的属性和方法的机制,类的继承是以生活中继承为灵感设计的。
生活中继承的例子有很多,例如,汽车的发展历程就体现了继承。最早汽车的轮胎都是实心的,功能少,性能差,而如今汽车的功能越来越多,性能越来越好,这是经过一代一代的发展而来的,每一代比上一代扩充了一些功能,改进了一些性能。纵观整个汽车的发展史,每一代汽车都是在上一代汽车的特征和行为的基础之上,进行了设计和改良。这其中有些功能没有改变,有些功能是新增的,也有些功能经过了改良。例如,从第一代的汽车到现在的汽车,做交通工具这一特点始终都在沿用。
生活中汽车的例子,与计算机中的继承是非常相似的。这么一代又一代的更新是有好处的。
首先,节省了设计流程,不用闭门造车。
其次,在前一代汽车基础之上设计,这样原来重复的生产技术还可以复用,再设计一些新增的功能,这样就能大大地提高生产效率。
下面介绍一个实际案例,来说明继承的用处。
假设设计一个师生管理系统,具有学生和教师两种用户,需要设计两个类,一个学生类(Student),一个教师类(Teacher)。Student类有学号、姓名、性别、年龄、用户名、密码等属性,Teacher类有姓名、性别、年龄、用户名、密码、学历等属性,这两个类中都有属性的getter和setter方法。由此可知,这两个类中有许多相同的属性和方法,也就是说代码有冗余。为了避免这样的情况,就可以使用继承来优化设计。将Student类和Teacher类中相同的属性和方法抽取出来,单独作为一个父类,这个父类称为用户类(User),而Student类和Teacher类作为子类继承父类User。Student类和Teacher类中就只放自己特有的属性和方法即可。由于这两个类都继承User类,因此User类中的属性和方法,它们可以直接使用。需要指出的是,在继承中私有属性和私有方法是不能被继承的。
继承提高了代码的重用性,减少了代码和数据的冗余度。另外,如果要修改用户名属性,不采用继承的情况下,两个类的属性都需要修改,而使用继承后,只需要修改父类的用户名属性即可。由此可知,继承使代码的修改更加方便。
关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。