当前位置: 首页 > 后端技术 > Python

Python中的类和对象

时间:2023-03-26 17:27:03 Python

现代编程语言几乎都支持面向对象编程,而面向对象编程是最有效的软件编写方式之一。您可以使用类和对象来表示现实中的任何事物和行为。当你写一个类时,你定义了一类事物共有的特征和行为。然后通过类创建对象,每个对象自动具有这个类的特征和行为,也可以赋予每个对象独特的个性。通过这种方式,您几乎可以表示您在代码中看到的任何内容。比如描述一下“我开车上班,中途车没油了,先加油”这样的常见场景。在这个场景中,涉及到的人和物包括“我”、“车”、“油”,这些人和物可以用物体来表示。我是人属于人的范畴,我的车属于车的范畴,油属于油的范畴。还有动作和行为。开车是我的行动,加油也是我的行动。除了动作和行为,还有属性和状态,比如汽车没油了,加油后还有油。类和对象的语法有点复杂,确实很难理解,这也是大多数学习编程的人最后选择放弃的原因。但其实只要学会抽象生活中的例子,类和对象并没有想象的那么难。什么是类A类是对具有共同特征和共同行为的事物的总称。所谓人以群分,物以类聚。类表示通常以驼峰命名法命名。classCar:passclassMobile:pass什么是对象?对象(Object)是一类事物的成员(个体)。我的车,你的车,你邻居的车通过一个类得到一个对象,这个过程叫做实例化,类似于函数调用。my_car=Car()your_car=Car()类与对象的关系类,相当于盖房子时的施工图(蓝图)。它是一个模板,负责创建房屋(对象)。可以通过类获取对象。这就像玩植物大战僵尸游戏。上卡相当于班级。拖动卡片以在下面的空地上获得一个对象。my_car=Car()car_class=Carprint(type(my_car),type(car_class))属性是整个类的特征,所有成员都是一致的,也称为类变量。classCar:wheel=Truematerial=["plastic","iron","aluminumalloy","rubber"]getclasspropertyprint(Car.wheel)instancegetclasspropertyCar().wheel修改类属性Car.wheel=False__init__初始化方法*__init__*称为初始化方法,表示对象生成时的初始化过程。比如手机生产出来后,需要贴logo、设计型号、壁纸、屏幕亮度等。classMobile:def__init__(self,brand,model,brightness):self.brand=brandself.model=modelself.brightness=brightnessprint("手机的品牌:{},型号:{},亮度:{}".format(brand,model,brightness))这个初始化方法有点特殊,在对象实例化的时候会自动调用。该方法的第一个参数是self,它是代表对象本身的固定语法。其他参数如品牌、型号、亮度等与普通函数参数相同,改值时传入实际参数即可。像self.brand这样的语法意味着定义一个实例属性。当传入一个特定的参数时,它可以作为一个对象的属性进行赋值。初始化方法不能有返回值。自己,我自己,这个。人名self.nameself代表类中的对象本身。在类外定义一个变量。self可以替换成其他变量名,但这是规范,强烈不建议替换。classMobile:def__init__(self,brand):self.brand=brandprint(self)redmi=Mobile("redmi")print(redmi)###类变量和实例变量同类属性。实例变量可以访问类变量,但是类变量不能访问实例变量。方法(Method)实例方法是最常用的方法类型。一般默认都是实例方法,通过实例调用。#初始化方法#实例方法的定义defdrive(self):print('{}isdriving'.format(self.name))类方法是类调用的方法,可以作为备用构造函数来初始化一种。狗类:def__init__(self,fullname):self.fullname=fullname@classmethoddefgouzao(cls,name1,name2):returncls(name1+name2)a=Dog('yuze')print(a)b=Dog.gouzao('yuze','wang')print(b)继承继承充分利用了面向对象的优势。编写类时,并不总是需要从空白开始。当您想要编写一个类是另一个现有类的专用版本时,请使用继承。当一个类继承另一个类时,它会自动获得另一个类的所有属性和方法。原来的类称为父类,新类称为子类。子类继承了父类的所有属性和方法,也可以定义自己的属性和方法。在写代码的时候,我们可以使用别人已经写好的类,我们自己定义一个类来继承别人写的类,就不用从头写了,大大提高了写代码的速度。重写父类方法如果子类想实现自己的方法,不想使用父类现成的方法,可以重写父类方法。手机类:def__init__(self,brand):self.brand=brandprint(self)defcall():print("calling")classIphone(Mobile):defcall():print("IphoneCalling")超如果在父类中重写一个方法,然后想要调用父类中的一些方法,可以使用超继承,我们会在单元测试中看到这种操作。你不需要重写和复制代码,你可以轻松地做更多的继承。(知道怎么用就知道了)-super(子类名,self),根据子类找到父类。classAnimal:defrun(self):print("Iamananimal,Iamrunning")classDog(Animal):defrun(self):super().run()print("Thedogisrunning")Dog().run()正常继承:classAnimal:def__init__(self,type):self.type=typedefrun(self):print("{}amrunning".format(self.type))classDog(动物):def__init__(self):动物。__init__(self,'Dog')a_dog=Dog()a_dog.跑步()