python核心课程-面向对象-方法相关

1.方法相关

    1.1方法概念:描述一个目标的行为动作:比如描述一个人怎样吃、怎样喝、怎样玩儿......

                        和函数十分类似,都封装了一些列行为动作。都可以被调用之后,执行一系列行为。最主要的区别就是:调用方式。

#函数的创建与调用
def eat():
    print(1)
    print(2)
    print(3)

eat()


#方法的创建与调用
class Person:
    def eat2(self):
        print(1)
        print(2)
        print(3)

p = Person()
p.eat2()

    1.2方法的划分

        实例方法:默认第一个参数需要接收到一个实例。

        类方法:默认第一个参数需要接收到一个类。

        静态方法:静静的看着前面装逼,第一个参数啥也不默认接收。

        注意:(1)划分依据:方法的第一个参数必须要接收的数据类型。

                  (2)不管是哪一种类型的方法,都是存储在类当中。没有在实例当中的。

                  (3)不同类型的方法的调用方式不同。

class Person:
    def eat2(self):
        print("这是一个实例方法", self)


    @classmethod
    def leifangfa(cls):
        print("这是一个类方法", cls)

    @staticmethod
    def jingtaifangfa():
        print("这是一个静态方法")

p = Person()
p.eat2()

p.leifangfa()

p.jingtaifangfa()

        使用:(1)语法

                 (2)不同类型的方法的规则

                 (3)不同类型方法的调用

                 (4)根据不同的问题,自己决定,到底该设计怎样的方法来解决问题。

    1.3实例方法

        语法:class Person:

                          def run(self):

                                pass

        标准调用:根据实例调用方法:不用手动传,解释器会自动把调用对象本身传递过去。

        注意:如果实例方法没有接收任何参数,则会报错。一个自传,一个不接收。

class Person:
    def eat(self, food,):
        print("在吃饭", food)

p = Person()

# 标准调用

p.eat("土豆")

        其他调用:使用类调用

                        间接调用

                        本质就是直接找到函数本身来调用。

    1.4类方法

class Person:
    @classmethod
    def leifangfa(cls, a):
        print("这是一个类方法", cls, a)

Person.leifangfa(123)

p = Person()
p.leifangfa(666)


func = Person.leifangfa
func(111)

# 装饰器的作用,在保证原本函数不改变的情况下,直接给这个函数增加一些功能。


# 延伸类
class A(Person):
    pass
A.leifangfa(909090)

    1.5静态方法

#-----------------------------------------------静态方法------------------------------------------------------------------

class Person:
    @staticmethod
    def jingtaifangfa():
        print("这是一个静态方法")

Person.jingtaifangfa()

p = Person()
p.jingtaifangfa()

func = Person.jingtaifangfa
func()

    1.6补充

class Person:
    age = 0
    def shilifangfa(self):
        print(self, "实例方法")
        print(self.age)
        print(self.num)
    @classmethod
    def leifangfa(cls):
        print(cls, "类方法")
        print(cls.age)
    @staticmethod
    def jingtaifangfa():
        print("静态方法")





p = Person()
p.num = 10
p.shilifangfa()

p.leifangfa()

# # 类属性
# print(Person.age)
# p.age
#
# # 实例属性
#
# print(p.num)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值