python中cls和self的用法与区别

python中self表示类的实例化对象,cls表示类本身,classmethod修饰的类方法中可以通过cls来实例化对象,如下所示:

#!/usr/bin/env python
# -*- coding:utf-8 -*-


# 定义学校类
class School(object):
    def __init__(self, name, loc):
        self.name = name
        self.loc = loc

    # 返回类的实例对象
    @classmethod
    def get_school_instance(cls):
        # cls()等价于School()
        s = cls("high school", "wuxi")
        return s


if __name__ == '__main__':
    school = School.get_school_instance()
    print(school.name, school.loc)

一般来说,一个类首先会调用new方法生成该类的实例化对象,所以init方法的第一个参数self便是new方法的返回值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pythonself是一个特殊的关键字,用于指代当前对象。在类,我们可以使用self来引用当前对象的属性和方法。以下是一些复杂的用法示例: 1. 类方法使用self ```python class MyClass: @classmethod def my_class_method(cls, arg1, arg2): # 调用类方法时,需要使用cls参数来引用当前类 print(cls.__name__) print(arg1, arg2) my_obj = MyClass() MyClass.my_class_method("hello", "world") my_obj.my_class_method("hello", "world") ``` 2. 静态方法使用self ```python class MyClass: @staticmethod def my_static_method(): # 静态方法不能使用self关键字,但是可以使用类名来引用属性和方法 print(MyClass.__name__) my_obj = MyClass() MyClass.my_static_method() my_obj.my_static_method() ``` 3. 在__init__方法使用self初始化对象属性 ```python class MyClass: def __init__(self, arg1, arg2): # 使用self关键字来初始化对象属性 self.arg1 = arg1 self.arg2 = arg2 my_obj = MyClass("hello", "world") print(my_obj.arg1, my_obj.arg2) ``` 4. 在类定义一个私有方法并使用self调用 ```python class MyClass: def __init__(self, arg1, arg2): self.arg1 = arg1 self.arg2 = arg2 def __my_private_method(self): # 私有方法也可以使用self来引用当前对象的属性和方法 print(self.arg1, self.arg2) def my_public_method(self): # 公开方法可以调用私有方法 self.__my_private_method() my_obj = MyClass("hello", "world") my_obj.my_public_method() ``` 这些都是self的一些复杂用法示例,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序遇上智能星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值