当前位置: 首页 > news >正文

网站做301排名会掉/优化大师官方

网站做301排名会掉,优化大师官方,做一名网络写手去那个网站好,专业模板网站设计公司Python 类 Property Staticmethod Classmethod前戏:一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。而使用staticmethod或classmethod,就可以不需要实例化,直接类名.方法名()来调用。这有利于组织代码&…

Python 类 Property Staticmethod Classmethod

前戏:

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。

而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。

这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。

既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢?

从它们的使用上来看:@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

@property 属性方法

属性方法的作用就是通过@property把一个方法变成一个静态属性

class Foo(object):

def __init__(self, name):

self.name = name

def func(self):

print("%s:基本方法" %self.name)

@property  # pro = property(pro)

def pro(self):

print("%s:属性方法" %self.name)

foo_obj = Foo("alex")

foo_obj.func()

foo_obj.pro

@getter @setter @deleter

class A(object):

def __init__(self, name):

self.__name = name

@property

def name(self):

return self.__name

@name.setter

def name(self, value):

if isinstance(value, str):

self.__name = value

else:

raise TypeError("%s must be str" % value)

@name.deleter

def name(self):

raise AttributeError("can not be delete")

a = A("alex")

print(a.name)

a.name = 222

del a.name

总结:@property属性方法 封装类中的方法,给用户更加简单的调用方式,隐藏具体的实现细节。

@method.getter 获取属性

@method.setter 设置属性, 可以写更多逻辑(比如格式转换,类型判断),并提醒其他人这里面可能有magic

@method.deleter 删除属性

@staticmethod可以看成是静态方法已经跟这个类没关系了,相当于已经脱离了这个类,是一个完全独立的函数,只是调用的时候必须通过这个类, 或者为了规范代码而将函数放到类中

类中定义函方法 PyCharm 提示Method xxx may be ‘static’, 原因是该方法不涉及对该类属性的操作,编译器建议声明为@staticmethod,面向对象思想体现

利用staticmethod来实现多种实例化方式

import time

class Date(object):

def __init__(self, year, month, day):

self.year = year

self.month = month

self.day = day

@staticmethod

def now():

t = time.localtime()

return Date(t.tm_year, t.tm_mon, t.tm_mday)

date = Date.now()

print(date.year, date.month, date.day)

date = Date(1999,12,12)

@classmethod

类方法只能访问类变量,不能访问实例变量, 也就是跟类有关,跟实例无关。

class ParentClass(object):

var = "test for parent"

@classmethod

def clsmethod(cls):

print(cls.var)

class SubClass(ParentClass):

var = "test for sub"

ParentClass.clsmethod()

>>>

test for parent

SubClass.clsmethod()

>>>

test for sub

此时ParentClass.clsmethod输出为 “test for parent”,而Subclass.clsmethod输出为“test for sub”。

通过此比较很好的诠释了@classmethod类方法隐式传入的第一个参数是当前类,而不是父类。`

同时类方法操作的是class 类对象提供的内部信息。而staticmethod可以作为一般的工具函数来使用。

总结:Classmethod主要用途是作为构造函数;

Python只有一个构造函数__new__,如果想要多种构造函数就很不方便。只能在new里面写一堆if isinstance 。

有classmethod之后就可以用classmethod来写不同的构造函数,cpython里面大部分classmethod最后都是 return cls(XXX), return XXX.__new__ ()之类的。

Staticmethod主要用途是限定Namespace;

也就是说这个函数虽然是个普通的function,但是它只有这个class会用到,不适合作为module level的function,这时候就把它作为staticmethod。

如果不考虑namespace的问题的话直接在module里面def function就行了。

各位小伙伴如果觉得还可以,请关注、点赞、收藏。感谢各位!

http://www.lbrq.cn/news/1461673.html

相关文章:

  • 网站推广seo设置/网店推广是什么
  • 在线考试类网站怎么做/苏州百度代理公司
  • 怎么在国税网站上做实名认证/爱站工具下载
  • 门户网站做等级保护测评/百度热搜榜第一
  • 什么网站做h5不收费/石家庄百度关键词搜索
  • 对网站开发语言的统计/2023年新闻热点事件
  • 网络服务商简称/seod的中文意思
  • 建网站热线电话/百度搜索排名机制
  • 做网站怎么把字弄图片上去/卖网站链接
  • 专门做网上链接推广的网站/搜索引擎优化的具体措施
  • 云梦网站开发/网页广告怎么做
  • 网站开发需要多少钱/优化资源配置
  • 住房和城市建设部网站/网络营销广告名词解释
  • 私人可以做org后缀网站吗/深圳网络推广解决方案
  • asp网站怎么做404页面/网站推广seo招聘
  • 制作网站需要注意什么/广告联盟赚钱app
  • 分析公司网站的开发策略/百度关键词投放
  • 邮箱163登录/唐山百度搜索排名优化
  • 狗爹域名网站/百度网络营销app
  • 微信开发网站/上海网站推广广告
  • 百姓网创建不了位置交易地点/seo教程有什么
  • 江苏建设网站公司/凡科建站和华为云哪个好
  • 免费b站不收费网站2023/哈尔滨关键词优化方式
  • 网站开发笔记/问卷调查网站
  • 网站建设用什么软件/网络营销方法
  • 有哪些程序网站/百度关键词搜索量统计
  • 济南 规划 网站/seo系统源码出售
  • 电视剧下载网站 免费糖醋蒜怎样做/扬州seo
  • 国内优秀网站设计师/武汉seo报价
  • 装饰公司怎样做网站/打开百度搜索网站
  • 推荐系统学习笔记(九)曝光过滤 Bloom Filter
  • Nvidia Orin + RealSense D435i 与3D地图实现导航
  • webrtv弱网-QualityScalerResource 源码分析及算法原理
  • React中的Hooks
  • Z20K118库中寄存器及其库函数封装-WDOG库
  • 操作系统-lecture4(进程的调度)