python class用法理解
python中class用法是什么呢?不知道的小伙伴来看看小编今天的分享吧!
1、class的定义及常用称呼:
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
对象:它是类的实例化。
方法:指类中定义的函数。
2、类对象支持两种操作:
属性引用和实例化。
属性引用的语法:obj.属性
类实例化的语法:obj = 类名()
类中方法的调用:obj.方法名()
3、举例:
例1
class student(object): #自定义一个类student
def speak(self): ## 哪个对象调用了这个方法,self就是那个对象;可以把self理解为一个形参
print("%s 说:我今年%s岁" % (self.name, self.age))
john = student() #类student 实例化一个对象john
john.name = "约翰" # 给对象添加属性
john.age = 19
john.speak() # 调用类中的 speak()方法
此时的输出为
约翰 说:我今年19岁
例2
class student(object): # 定义构造方法 有init,有别于自定义类
def __init__(self, n, a): #__init__() 是类的初始化方法;它在类的实例化操作后 会自动调用,不需要手动调用;
self.name = n
self.age = a # 设置属性
def speak(self): # 定义类中的普通方法
print("%s 说:我今年%s岁" % (self.name, self.age))
john = student("约翰",19) #类student 实例化一个对象john
john.speak() # 调用类中的 speak()方法
最后的输出同上个例子
在python中使用__开头 并以__结尾的方法,称之为魔法方法;
init(self) 是类的初始化方法,也称构造方法,是一种特殊的魔法方法; init(self)在实例化后,会自动调用,而不用手动调用,所以一般把属性设置在_init__()里;
常用到的魔法方法还有:str(self) 、 del(self)等。
4、类的继承以及super,self的使用:
子类继承父类,即子类拥有了父类的属性和方法。
python中类的初始化都是__init__()。所以父类和子类的初始化方式都是__init__()
但是如果子类初始化时没有这个函数,那么它便调用父类的__init__();(对应例input1)
如果子类种调用了父类的init,但自己又定义了自己的init,那么就会覆盖父类的初始化函数,只显示子类自己的初始化。(对应例input2)
input1:
class Animal(object):
def __init__(self):
self.name = "我是父类"
class Panda(Animal):
def __init__(self):
super().__init__() #使用super的方式来显示调用父类的__init__()函数
super(Panda, self).__init__() # 第二种super初始化的方式
if __name__=="__main__":
panda = Panda() #实例化Panda
print(panda.name)
output1:
我是父类
input2:
class Animal(object):
def __init__(self):
self.name = "我是父类"
class Panda(Animal):
def __init__(self):
super().__init__()
self.name = "panda"
if __name__=="__main__":
panda = Panda()
print(panda.name)
output2:
panda
2. self和super的区别:
(1) self是首先调用自身的方法如果自身没有再去父类中找;super是直接从父类中找方法
(2)self是类(可以理解为形参),super是预编译指令
反正要继承父类,直接上super就ok了
input3:
class Animal(object):
def __init__(self):
self.name = "我是父类"
def A(self): #父类中的A方法
print("父类的A方法")
class Panda(Animal):
def __init__(self):
super().__init__()
self.myname = "panda"
def A(self): #子类中的A方法
print("子类的A方法")
def B(self):
self.A() #self调用A
super().A() #super调用A
if __name__=="__main__":
panda = Panda()
panda.B() #通过B函数来调用A方法,查看self和super的区别
output3:
子类的A方法#我们说过self是先从自身找方法,没有再去父类找
父类的A方法#而super则是直接从父类中找
-
字母哥三代容易开胶吗 字母哥三代值得入手吗
在刚结束不久的NBA赛事里,字母哥拿到了FMVP,也算是对其的能力的认可,当然他的最新签名鞋freak3代也是很受大家关注的,那这双鞋款的优缺点有哪些呢?值得入手吗?下面就和小...
品牌查看全文>> -
抗击2022年河南疫情暖心励志语录短句
1、坚决落实好各项防控措施,确保人民群众生命健康安全和社会大局稳定3、今日份元气水传送完毕,依然代表生机生命力的绿绿,给河南朋友加油打气,我愿意一直等樱花季。4、戴口罩 勤洗手...
语录查看全文>> -
车标五角星是什么汽车?
车标五角星是启辰汽车和江淮汽车,启辰车标是由四颗小星星环绕着一颗大星星,车标内蓝色象征梦想,代表启辰脚踏实地、仰望星空,启明星则是启辰的起源,开放性的五角星设计寓意启辰作为一个...
问答查看全文>> -
怎么判断机油里进了汽油
通过车辆的运行情况来判断:车辆的发动机机油压力会过低,机油会变得比较稀,在检查发动机机油容量的时候,拔出机油尺会有汽油味,发动机机油的容量会增加,这些问题都可以判断是机油里面进...
问答查看全文>> -
传祺gs4新能源到手多少钱?
传祺gs4新能源的官方价格是20万左右 ,加上优惠的话,大概16万就可以到手了:1、传祺GS4新能源的车头“凌云翼”式中网进过全新优化设计,全新LED矩阵大灯组提高了一定的颜值...
问答查看全文>>
推荐
- 1宝来点烟器怎么用?118
- 2标志307cc多少钱一公里?493
- 3电动面包车有哪些牌子201
- 4关于蚕的好词好句 关于景色的好词好句403
- 5人生有太多无奈心酸 人生太多无奈心情说说324
- 6滨州建材市场有哪些 滨州十大家居建材市场459
- 7哈弗蓝标和红标是什么意思?363
- 8本田小绿叶准确使用方法,本田小绿叶开了有什么优缺点190