⑩,类与对象

mac2025-05-15  7

类(class)

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类在面向对象的语言中是一个重要的概念 如果说我们要面向一个对象,那么我们可以提取出它的特征,组合成一个类 比如说,有个球,它是圆的,可以是多种颜色的,可以踢,那么…

class Ball : # python约定类名以大写字母开头 color = 'black and white' def color(self): print('black and white') def form(self): print('A ball, you know?') def kick(self): print('Keep your head down!') my_ball=Ball() my_ball.color() my_ball.form() my_ball.kick() >>>black and white A ball, you know? Keep your head down!

我们以类为模板创建对象,对象就是类的实例。类不但包含方法和定义,还包含所有实例共享的数据。 而类,实际上也是一个对象,类对象 实例化,就是以类为模板创建一个 对象 ,一个类的 实例对象 ,一个类可以创建无数个实例对象 类里面有属性和方法

属性

类属性:类里面方法外面定义的变量称为类属性。类属性所属于类对象并且多个实例对象之间共享同一个类属性,说白了就是类属性所有的通过该类实例化的对象都能共享(全局变量)(默认为公有,后面会说到)。 在类的外面,可以通过实例对象.类属性和类名.类属性调用 类内,通过self.类属性和类名.类属性调用

实例属性,可以说是专属于这个实例的属性,就好比我创建了一个类class 人类,里面有一个身高属性,这时我将人类实例化创建一个对象:作者,如果作者的身高是175,那么能说人类这个类下的其他对象的身高是175吗?当然,也有的人身高的身高是175,但这两者并不具有相同的意义。

在类外面,可以通过实例对象.实例属性调用。类里面,通过self.实例属性调用(算是一个局部变量)。

毕竟,对象=属性+方法

继承

子类,或者说派生类,是以父类(也就是基类)全部或部分的属性和方法为基础的一个“新的”类。 就像一个孩子的特点继承与他的父母,但又有可能和他的父母不一样。

也就是说,我们可以在子类下面定义更多的属性和方法,也可以什么都不干。

一个子类继承多个父类就叫多继承。 在继承时,如果在子类中重新定义了父类中的方法和函数,在这个子类中会自动覆盖 但要注意,如果在继承的多个父类中存在重名的方法名,而子类调用时又未指定,即Python会先搜索子类中是否定义,没有定义的话会从左到右( → )搜索父类中是否包含该方法 (所以,子承父业,也许还可以有所发展…。)

class Bad_ball(Ball): def form(self): print('Okay, I see. It\'s not a sphere.') def color(self): print('Could it be black and white?') his_ball=Bad_ball() his_ball.color() his_ball.form() his_ball.kick() >>> Could it be black and white? kay, I see. It's not a sphere. Keep your head down!

多态

人和人总要会点差别,多态就是用来反映同一类下不同对象在面对相同事件时的不同反映 就像有人抽新池子一发入魂,而有的人(比如我)不是慢性死亡(单抽)就是瞬间暴毙(十连)。 对象也是。

class Player: def My_turn(self): raise AttributeError class Seal(Player): def My_turn(self): print('噫!我中了!') class Me(Player): def My_turn(self): print('孽畜,你中了什么!') me=Me() my_little_kid=Seal() my_little_kid.My_turn() me.My_turn() >>> 噫!我中了! 孽畜,你中了什么!

Python 一阶禁咒:_init_()和_del_

构造函数_init_()参考炉石传说 战吼(很通俗易懂对不对!) 在创建时自动运行 _init_为我们提供了及其方便的初始化创建,它会在在类实例化的时候自动运行 而你要做的,就是写下咒语…

class Wan: def __init__(self,name): self.name = name def who(self): if self.name=='红白': print(self.name,'巫女') elif self.name=='黑白': print(self.name,'老鼠') else: print('是新来的孩子吗?') Hakurei_Reimu=Wan('红白') Hakurei_Reimu.who() Kirisame_Marisa=Wan('黑白') Kirisame_Marisa.who() >>> 红白 巫女 黑白 老鼠

既然战吼都有了,为什么会没有亡语呢 析构函数_del_ 删除指定变量,释放空间

公有和私有

在 Python 中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就会为私有的了,不能在类地外部调用,只能在类的内部调用。

该操作可适用于属性和方法

相关内置函数

函数解释issubclass(class, classinfo)方法用于判断参数 class 是否是类型参数 classinfo 的子类。getattr(object, name[, default])用于返回一个对象属性值。hasattr(object, name)用于判断对象是否包含对应的属性。delattr(object, name)用于删除属性。setitem按照索引赋值getiteam按照索引取值len获取长度cmp比较运算call函数调用add加运算sub减运算mul乘truediv除mod求余pow乘方
最新回复(0)