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则是直接从父类中找
以上就是小编今天的分享了,希望可以帮助到大家。
生活百科
- 蚌埠天气预报10天 蚌埠天气预报下载
- 5000个税计算器 个税计算税率表5000
- 30岁不结婚该判刑 30岁不结婚该判刑多久
- 宝鸡天气预报10天 宝鸡天气预报下载
- 3月8日妇女节放假吗 三月八日妇女节放假
- 2024端午节放假通知来了 2024端午假期
- 总公司与分公司 总公司与分公司的法律责任
- 醉驾刑事拘留一般多少天
- 咨询律师要多少钱 咨询律师的费用是多少
- 醉酒撞停放车身亡 醉酒撞停放车身亡责任划分
- 注册一个商标多少钱 注册一个商标大概要多少钱
- 浙传失联女生离世 浙江传媒学院失联学生已确认离世
- 诈骗罪立案标准 诈骗罪立案标准2024
- 占地补偿标准:2024征地补偿标准明细表
- 怎么注册公司要多少钱
- 宅基地继承最新政策