已解决
六、Python类的高级知识
来自网友在路上 151851提问 提问时间:2023-10-25 02:40:23阅读次数: 51
最佳答案 问答题库518位专家为你答疑解惑
一、类
情景:
- 如果不实例化一个类能否调用其中的函数
- 类里面的函数如何减弱跟类的关系,在一起只是为了代码方便整洁
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'@staticmethoddef 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'@classmethoddef 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 = 152def titile(self):jack = '18'a = view()
print(hasattr(view, 'name'),hasattr(view, 'titile')) # True True
2.获取
格式:getattr(obj, name, default)# 查询到返回查询值,找不到返回第三个参数
class view:name = 152def 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 = 152def 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'
删除类属性:
del c.name
查看全文
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"六、Python类的高级知识":http://eshow365.cn/6-23827-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!