python_类

一、类属性和类方法

创建类:关键字class 类名首字母大写
创建实例对象 类名()
调用类属性:实例对象.属性名
调用类方法:实例对象.方法名

类方法中:self是固定的占坑符号,类里面的方法都必须带self

class Boyfrind():
    # 类属性
    height=175
    weight=130
    # 类方法
    def cooking(self): #self 固定的占坑符合 类里面的方法都必须带self这个参数 self代表实例本身
        print("会做饭")
    def earn(self):
        print("会挣钱")
        
    @classmethod
    def swimming(cls):
        print("还要会游泳")
        
    @staticmethod
    def sing():
        print("会唱歌")
# 创建实例并调用
bf=Boyfrind()
print("————————实例方法——————————")
print(bf.height) # 调用类属性
bf.cooking() #调用类方法
# 类方法 @classmethod
# 类方法调用一:
print("————————类方法——————————")
Boyfrind.swimming()
# 类方法调用二:
bf.swimming()
# 静态方法的调用
# 静态方法调用一:
print("————————静态方法——————————")
Boyfrind.sing()
# 静态方法调用二:
bf.sing()
运行结果:
————————实例方法——————————
175
会做饭
————————类方法——————————
还要会游泳
还要会游泳
————————静态方法——————————
会唱歌
会唱歌

实例拥有使用类里面的所有属性和方法的权限

二、类方法的分类

类里面的方法分为三种:
(1) 实例方法:意味着这个方法只能实例调用
     bf=Boyfrind()
     bf.cooking() #隐式调用
     Boyfrind.cooking(bf) #显示调用
(2) 类方法:方法前面必须加 @classmethod  (可参考上诉代码)
	 方式一:Boyfrind.swimming()
	 方式二:bf.swimming()
(3) 静态方法:  方法前面必须加@staticmethod  (可参考上诉代码)
	 方式一:Boyfrind.sing()
	 方式二:bf.sing()

实例方法、类方法、静态方法总结

1:实例方法 self 类方法 cls 静态方法(普通方法) 实例和类名都可以直接调用
2:不同点 静态方法和类方法 不可以调用类里面的属性值 如果你要参数 需要自己进行传参
3:什么时候去定义静态和类方法 当你的某个函数与其他的类函数 没有半毛钱关系 就可以定义静态方法和类方法

三、初始化函数 init

class LemonTeacher:
    def __init__(self,name,age): # 初始化函数 __init__,没有return值
        self.name=name
        self.age=age
        # 没有return

    def info(self):
        print(self.name+"今年"+self.age+"岁")
    def coding(self,*args):
        self.cooking(*args)
        print(self.name+"会敲代码")
    def cooking(self,*args):
        for item in args:
            print("会做{0}".format(item))
      
t_2=LemonTeacher("毛毛","20")
t_2.coding("蛋炒饭","蔬菜沙拉")
运行结果:
	会做蛋炒饭
	会做蔬菜沙拉
	毛毛会敲代码

四、类的继承

1 父类有的 继承后  都可以直接拿过来用
2 父类有 子类也有重名的 那么子类的实例就优先调用子类的函数
# 继承
class RobotOne:#第一代机器人
    def __init__(self,name,year=None):
        self.year=year
        self.name=name
    def walking_on_ground(self):
        print(self.name+"只能在平地上行走,有障碍物就会摔倒")
    def robot_info(self):
        print("{0}年产生的机器人{1},是中国研发的".format(self.year,self.name))

class RobotTwo(RobotOne): # 第二代机器人继承于第一代机器人的类
    def walking_on_ground(self): # 子类里面的函数名与父类里面的函数名一样 就叫重写
        print(self.name+"可以在平地上行走")
    def walking_avoid_block(self): #拓展
        # 我想在子类的函数里面调用父类的一个函数
        self.robot_info()
        print(self.name+"可以避开障碍物")
     
r_2=RobotTwo("2018","华华")
r_2.robot_info()
r_2.walking_on_ground()
r_2.walking_avoid_block()
运行结果:
	华华年产生的机器人2018,是中国研发的
	2018可以在平地上行走
	华华年产生的机器人2018,是中国研发的
	2018可以避开障碍物

五、类的多继承

多继承 具有两个父类的属性和方法 如果两个父类具有同名方法的时候 就近原则
初始化函数也包含在内
# 继承
class RobotOne:#第一代机器人
    def __init__(self,name,year=None):
        self.year=year
        self.name=name
    def walking_on_ground(self):
        print(self.name+"只能在平地上行走,有障碍物就会摔倒")
    def robot_info(self):
        print("{0}年产生的机器人{1},是中国研发的".format(self.year,self.name))

class RobotTwo(): # 第二代机器人继承于第一代机器人的类
    def __init__(self,name,year):
        self.name=name
        self.year=year
    def walking_on_ground(self): # 子类里面的函数名与父类里面的函数名一样 就叫重写
        print(self.name+"可以在平地上行走")
    def walking_avoid_block(self): #拓展
        # 我想在子类的函数里面调用父类的一个函数
        self.robot_info()
        print(self.name+"可以避开障碍物")
# 多继承
class RobotThree(RobotTwo,RobotOne): #第三代机器人  继承第二代机器人、第一代机器人
    def jump(self):
        print(self.name+"可以单膝跳跃")

r_3=RobotThree("大王","2010")
r_3.jump()
r_3.walking_on_ground()
r_3.walking_avoid_block()
运行结果:
	大王可以单膝跳跃
	大王可以在平地上行走
	2010年产生的机器人大王,是中国研发的
	大王可以避开障碍物

六、超继承 super()

super() 函数是用于调用父类(超类)的一个方法。

# 超继承
class MathMethod:
    def __init__(self,a,b):
        self.a=a
        self.b=b
    def add(self):
        print("我是父类中的方法",self.a+self.b)

    def sub(self):
        print( self.a-self.b)


class MathMethod_1(MathMethod): #继承MathMethod
    def divide(self):# 拓展
        print(self.a/self.b)
    def add(self): # 重写
        super(MathMethod_1,self).add() #超继承:想用父类的方法 又不想重新写  
        print("我是子类中的方法",self.a+self.b+10)

MathMethod_1(5,6).add()

MathMethod_1(5,6).sub()
运行结果:
	我是父类中的方法 11
	我是子类中的方法 21
	-1
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值