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.na, self.age))
john = student() #类student 实例化一个对象john
john.na = "约翰" # 给对象添加属性
john.age = 19
john.speak() # 调用类中的 speak()方法
此时的输出为
约翰 说我今年19岁
例2
class student(object): # 定义构造方法 有init,有别于自定义类
def __init__(self, n, a): #__init__() 是类的初始化方法;它在类的实例化操作后 会自动调用,不需要手动调用;
self.na = n
self.age = a # 设置属性
def speak(self): # 定义类中的普通方法
print("%s 说我今年%s岁" % (self.na, 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.na = "我是父类"
class Panda(Animal):
def __init__(self):
super().__init__() #使用super的方式来显示调用父类的__init__()函数
super(Panda, self).__init__() # 第二种super初始化的方式
if __na__=="__main__":
panda = Panda() #实例化Panda
print(panda.na)
output1
我是父类
input2
class Animal(object):
def __init__(self):
self.na = "我是父类"
class Panda(Animal):
def __init__(self):
super().__init__()
self.na = "panda"
if __na__=="__main__":
panda = Panda()
print(panda.na)
output2
panda
2. self和super的区别
(1) self是调用自身的方法如果自身没有再去父类中找;super是直接从父类中找方法
(2)self是类(可以理解为形参),super是预编译指令
反正要继承父类,直接上super就ok了
input3
class Animal(object):
def __init__(self):
self.na = "我是父类"
def A(self): #父类中的A方法
print("父类的A方法")
class Panda(Animal):
def __init__(self):
super().__init__()
self.myna = "panda"
def A(self): #子类中的A方法
print("子类的A方法")
def B(self):
self.A() #self调用A
super().A() #super调用A
if __na__=="__main__":
panda = Panda()
panda.B() #通过B函数来调用A方法,查看self和super的区别
output3
子类的A方法 #我们说过self是先从自身找方法,没有再去父类找
父类的A方法 #而super则是直接从父类中找
以上就是小编今天的分享了,希望可以帮助到大家。
生活小妙招
- 杭州市小客车总量调控管理暂行规定
- 个人所得税退税的条件和标准 下载个人所得税
- 江苏省南通市通州区天气 江苏省南通通州区天气
- 夫妻有按揭的房子离婚怎么办 夫妻有按揭的房子
- 山东省青岛市市北区天气 山东省青岛市市北区天
- 什么财产离婚后不用分割 什么财产离婚后不用分
- 工伤认定必须满足三个条件 工伤认定申请必须满
- 家暴出轨不受离婚冷静期限制 家暴不适用离婚冷
- 武夷山一周天气预报 武夷山一周天气预报15天准
- 怎么与孩子沟通最有效方法 怎么与孩子沟通的技
- 女方提出离婚财产怎么分割 女方提出离婚财产怎
- 华东五市天气预报 华东五市的天气
- 深圳车辆违章记录查询 深圳车辆违章记录查询
- 老公铁了心要离婚还能挽回吗 老公铁了心离婚的
- 怎么计算工伤十级的赔偿金 工伤十级赔偿计算公
- 武汉天气预报15天气报 武汉天气预报15天