第二十三课:面向对象(5)

本文介绍了面向对象编程中的三种方法:普通方法、静态方法和类方法。普通方法通过`self`访问实例属性;静态方法不依赖类或实例,不接收`self`参数;类方法通过`@classmethod`修饰,接收`cls`参数来操作类属性。示例代码展示了这三种方法的使用和调用方式,强调了它们之间的区别和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、普通方法

        在面向对象里面我们用到最多的就是普通方法,语法格式如下:

    def function_name(self,...):

      pass

    外部用实例调用

二、静态方法

        静态方法用 @staticmethod 进行说明。它不能访问实例属性,参数不能传入self。是一种与类相关但是不依赖类与实例的方法。

三、类方法

        类方法用 @classmethod 进行说明。它不能访问实例属性,参数必须传入cls。必须传入cls参数(即代表了此类对象-----区别------self代表实例对象),并且用此来调用类属性:cls.类属性名。

eg:

class eg():

    country = 'China'   #声明类属性,并且赋值

    # 实例属性通过构造方法来声明
    # self不是关键字,代表的是当前而对象
    def __init__(self, name, food,address,country):
        #构造方法不需要调用,在实例化的时候自动调用
        # print('我是构造方法,在实例化得时候调用')

        self.name = name
        self.food = food

        self.__address = address #双下划线开头的属性是私有属性

        eg.country = country

    # 1:普通方法:
    def a(self):
        #类属性的使用通过类名.属性名使用 这是规范
        #私有属性在类里面使用正常使用
        print(self.name, self.food,self.__address )

    #2:静态方法:通过装饰器 @staticmethod  装饰
    @staticmethod
    def SilenceS():  #不需要传递实例
        #不能访问实例属性
        # print(self.name)    # erro

        #只能访问类属性
        print(eg.country)

    #3:类方法:@classmethod
    @classmethod
    def b(cls,n):  #class  也不是关键字
        #不能访问实例属性
        # print(self.name)    # erro

        cls.country = n
        print(cls.country)

#实例化对象
people01 = eg('MgVccl',19,'男','上海')

#通过对象来调用静态方
# people01.SilenceS()
#通过对象来调用类方法
# people01.b()




#静态方法和类方法的调用,推荐使用类名的方式去调用
#通过类名来调用静态方法
eg.SilenceS()
#通过类名来调用类方法
eg.b('jane')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值