六、Python类的高级知识

本文详细介绍了Python中的类及其组成部分,包括实例方法需实例化后调用,静态方法无需实例化,类方法可接收cls参数;同时讲解了对象属性的判断、获取、添加和删除操作。
摘要由CSDN通过智能技术生成

一、类

情景:

  1. 如果不实例化一个类能否调用其中的函数
  2. 类里面的函数如何减弱跟类的关系,在一起只是为了代码方便整洁

1.实例方法

示例:

class TEST():
    def __init__(self):
        self.hello='nihao'

    def printf(self):
        for i in range(1,5):
            print(str(i) + self.hello)


test = TEST()
test.printf()

结果:
1nihao
2nihao
3nihao
4nihao

解释:上诉例子就是类的实例方法,必需先实例化一个类,然后才能调用类里面的函数,如果不实例化直接调用,它就会报错缺失self参数,看其与下面内容的对比就能更加深入理解

2.静态方法

示例:

class TEST():
    def __init__(self):
        self.hello='nihao'
    @staticmethod
    def printf():
        for i in range(1,5):
            print(str(i))


TEST.printf()
结果:
1
2
3
4

解释:上述例子就实现不实例化就能够对函数进行调用,Django中urls文件里面写函数的方法就很像这个,直接调用

静态方法:不能有self参数;不能调用TEST()里面的任何东西;静态方法使得方法更像是一段独立函数

3.类方法

示例:

class TEST():
    hello = 'today'

    def __init__(self):
        self.hello = 'nihao'

    @classmethod
    def printf(cls):
        for i in range(1, 5):
            print(str(i) + cls.hello)
TEST.printf()
结果:
1today
2today
3today
4today

解释:上诉例子也实现了直接调用类的函数

类方法:类方法可以接受cls作为参数,这就意味着类方法可以读取或修改类的状态,如上cls.hello读取到的并不是self.hello = 'nihao'而是在def __init__外面定义的hello

二、对象属性和类方法[判断、获取、添加、删除]

1.判断

格式:hasattr(obj, name) #存在返回True,不存在返回False

class view:
    name = 152
    def titile(self):
        jack = '18'

a = view()
print(hasattr(view, 'name'),hasattr(view, 'titile')) # True True

2.获取

格式:getattr(obj, name, default)# 查询到返回查询值,找不到返回第三个参数

class view:
    name = 152
    def titile(self):
        jack = '18'

a = view()
print(getattr(view, 'name',False),getattr(view, 'titie',False))# 152 False

3添加

格式:setattr(obj, name, value) # 第二个参数是名称,第三个参数是内容

def append(self):
    print(985)
class view:
    name = 152
    def titile(self):
        print(55555555555)

a = view()

setattr(view,'get',append)
setattr(view,'oppo','555')
a.get()
print(a.oppo)

4.删除

格式:delattr(c,'name')

class c:
    name = 999  # 类属性

    def __init__(self):
        lo = 66  # 对象属性

a = c()
delattr(c,'name')

print(c.name) #AttributeError: type object 'c' has no attribute 'name'

删除类属性:

  1. del c.name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值