python3类继承,python入门之类的继承
我简单说一下我学习python继承的一些想法和体会。
在学习python的面向对象时,我总是参考c的面向对象机制,相对来说,python的面向对象确实更简单。
基础:
整数也被视为对象。如前所述,一切都是对象,包括函数。一个属于对象或类的变量叫做domain ——,有点奇怪。c称为成员。有两种域,分别属于objects和class 3354,实际上是成员和静态成员。Self指针:相当于c中的这个,在python中,你可以把一个类想象成另一种形式的函数。self告诉python使用哪个对象的成员变量。在python中,只有一个类成员函数与全局函数同名。写出来的函数会覆盖前面的,不存在函数重载。__init__方法
类的构造函数是__init__方法,该方法在创建类时调用。没必要,没有也可以。成员和类的变量和方法
类的定义:缩进和方法的缩进是一样的。引用时,需要使用类的方法。变量名。成员变量可以在类中的任何地方定义。如果在成员函数中定义,self.xxx=.会的。但从逻辑上讲,这个成员变量应该在使用的时候定义。在一个类中,定义在成员函数之外的变量是类成员。这个类的所有对象都可以被调用。破坏者
__del__方法相当于他的析构函数,在对象被销毁时调用。
私人功能
如果成员函数或成员变量以双下划线_ _开头,则表示私有。那些不以双下划线开头的是公户的成员。python中的类没有受保护的成员。
继承:
继承成员特征:
对于类的成员,它们可以被父类访问。变量名或子类。子类中的变量名,它们是相同的。对于对象的成员,通过self的名字在子类中访问它们。可变。访问不属于此类的私有成员“_classname__method”或“_classname__variable”的继承时方法的特征:
子类的构造函数生成时,父类的构造函数不会自动调用,必须手动调用。同时,在释放对象时,也要手动调用析构函数。子类的构造函数和析构函数可以不定义。如果没有,它将调用基类的构造函数和析构函数。Python中没有动态绑定和静态绑定。这和c不同,如果基类有一个公共函数,子类就重新定义了一个与其同名的函数,子类覆盖了父类。python中没有函数重载,一个函数名只能对应一个函数。这个继承模型真的很简单。
特殊方法:
__init__(self,)这个方法在新创建的对象被返回使用之前被调用。__del__(self)在对象即将被删除之前被调用。__str__(self)是我们对对象使用print语句或str()时调用的。__lt__(self,other)在使用小于运算符()时调用。同样,所有运算符都有特殊的方法(、等)。).__getitem__(self,key)在使用x[key]索引运算符时调用。__len__(self)在对sequence对象使用内置len()函数时调用。下面是我在编写python类继承时遇到的奇妙问题:
一个非常简单的例子:
类A(object): def tell(self):打印 A tell self.say() def say(self):打印 A say self。_ _ work()def _ _ work(self):# private print A work class B(A):def tell(self):print \ tB tell self . say()super(B,self)。say()a . say(self)def say(self):print \ tB say self。__work() def __work(self): #私印 \tB work self。_ _ run()def _ _ run(self):# private print \ tB run B=B()B . tell()
获得的结果:
告诉我,我工作,我工作,我工作
再把例子中的私有函数,全变成公众的的A类(object):def tell(self):打印 A tell self。say()def say(self):打印 A say self。work()def work(self):# public print A work B(A):def tell(self):print \ tB tell self。say()super(B,self).say()a . say(自我)def say(自我):print \ tB say self。work()def work(self):# public print \ tB work self。run()def run(self):# public print \ tB run B=B()B . tell()
获得结果:
告诉我说工作跑,说工作跑
从这个例子里可以看到,想用大蟒在父类调用子类的推翻函数,最好把相关函数全变为公有。
大蟒适合做胶水,不适合做零件。涉及到复杂设计及计算效率的代码,还得用丙。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。