【Python】属性与方法
admin
2024-01-21 03:09:16
0

在类中定义的属性(变量)、方法(函数),在类的外部都无法直接调用它们。可以把类看作一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量,类方法其实就是定义的类命名空间中的函数。

目录

1. 类变量和实例变量

1. 类变量

2. 实例变量

2. 私有变量与公有变量 

3. 类方法与实例方法 

1. Python类方法

2. Python类实例方法

3. Python类静态方法


1. 类变量和实例变量

根据定义变量的位置不同,类的变量又可细分为类变量(类属性)和实例变量(实例属性)

1. 类变量

① 定义在类中,各个类方法外的变量称为类变量。类变量的特点是:类的所有实例化对象都可以共享类变量的值,即类变量可以在所有实例化对象中作为公用资源。

② 在类内部,所有方法都可访问类变量,方式为:类名.类变量。类的任何一个实例化对象都可以共享类变量的值,该类其他的所有实例化对象对应的类变量,都指向了修改的值。

③ 实例化对象访问类变量的方式:对象名.类变量

2. 实例变量

① 在类的构造方法中,前缀带self的变量称为实例变量。实例变量必须在构造方法中进行初始化赋值。其特点是:只作用于调用方法的对象。

② 在类内部,所有方法都可访问实例变量,方式为:self.实例变量

③ 实例化对象访问实例变量的方式:对象名.实例变量

④注意,实例变量只能通过对象名访问,无法通过类名直接访问。Python允许通过对象访问类变量,但无法通过对象修改类变量的值。因为,通过对象修改类变量的值,不是在给“类变量赋值”,而是定义新的实例变量。

⑤ 在类中,实例变量和类可以同名,但是在这种情况下,使用类对象将无法调用类变量,因为它会首选实例变量,因此不推荐实例变量和类变量同名。

⑥ 如果程序对一个对象的实例变量进行了修改,这种修改不会影响其他对象中实例变量的值

2. 私有变量与公有变量 

① 类变量和实例变量属于公有变量,可以通过实例化对象进行访问。在命名变量时,前面加两个下画线(__)开头但是不以两个下画线结束,如__XXX,这样的变量称为私有变量。

② 私有变量在类的外部不能直接访问,一般是在类的内部进行访问和操作,或者在类的外部通过调用对象的公有变量方法来访问。

③ Python并没有对私有变量提供严格的访问保护机制,通过一种特殊方式“对象名._类名_xxx”也可以在外部程序中访问私有变量,但这会破坏类的封装性,不建议这样做。

3. 类方法与实例方法 

类中的方法可分为类方法、实例方法和静态方法

1. Python类方法

① 在Python的类定义中,第一个形参为cls,并且使用@classmethod进行修饰的方法称为类方法。

② 类方法与类本身绑定,它不和类的实例对象发生往来。在调用类方法时,无须显式为cls参数传参。 

③ 不管程序是使用类还是对象调用类方法,Python都会将类方法的首个参数绑定到类本身。

2. Python类实例方法

① 在类的定义中,第一个形参为self的方法称为实例方法。在调用实例方法时,参数self不需要传值,它代表当前对象。

② 类的构造方法(__init__)理论上也属于实例方法,只不过它地位特殊。

③ 在实例方法中,访问实例成员时需要以self为前缀,但在外部通过对象名调用对象方法时并不需要传递这个参数。

④ 如果在外部通过类名调用属于对象的公有方法,则需要显式为该方法的self参数传递一个对象名,用来明确指定访问哪个对象的成员。

3. Python类静态方法

① 静态方法与前面讲的函数类似,主要区别在于,静态方法定义在类这个空间(类命名空间)中,而函数定义在程序所在的空间(全局命名空间)中。

② 静态方法没有self、cls这样的参数,Python解释器不会对它包含的参数做任何类或对象的绑定,因此,静态方法无法调用任何类和对象的属性和方法。

③ 静态方法通过@staticmethod进行修饰,静态方法的调用可以使用类名,也可以使用类对象。

④ Python编程时,一般不需要使用类方法或静态方法,程序完全可以使用函数来代替类方法或静态方法。当然,某些特殊的场景下,类方法或静态方法也可以作为一种选择。

⑤ 静态方法和类方法不属于任何实例,不会绑定到任何实例,任何类的实例对象均可共享类的静态方法和类方法。 

相关内容

热门资讯

【IPO追踪】零成交常态化,解... 港股市场最尴尬的处境,莫过于股价跌跌不休,连交易都无人问津。6月24日,美联股份(02671.HK)...
SK海力士冲刺美国上市,ADR... 若顺利完成,相关交易最快有望于下个月启动,并成为韩国企业历史上规模最大的海外股权融资项目之一。 人工...
伯恩斯坦:锂价上行周期远未结束... 6月23日消息,伯恩斯坦最新研报中上调锂价预测,并将 天齐锂业(002466.SZ)A股目标价从73...
原创 全... 中国与印度尼西亚之间,正在上演一场围绕镍矿资源的激烈博弈。令人颇感意外的是,这场博弈的主动挑起者竟然...
企业出海ESG合规与可持续发展... 中新网北京6月24日电 (记者 尹倩芸)2026年北京市“走出去”系列活动——企业出海ESG合规与可...
原创 中... 聊到现在的楼市,身边人想法差得挺远。有人还在等跌,觉得再观望一阵更稳妥。也有人盯上了官方最近放的几个...
企业微信Agent内测悄启 主... 继微信AI助手开启内测后,企业微信紧跟步伐开启了AI助手的内测,但跟微信嵌入的不是同一个Agent。...
马斯克官宣Starmind太空... IT之家 6 月 24 日消息,埃隆 · 马斯克(Elon Musk)今天(6 月 24 日)在 X...
5000亿市值巨头,盘中涨停 6月24日午后,立讯精密股价直线拉升,盘中触及涨停后开板。截至发稿,该股报75.39元/股,涨8.6...
中兴通讯爱理财?额度2年翻倍至... 图片来源:图虫创意 钱的流向,往往折射出一家企业的战略重心。 6月17日,中兴通讯在深圳召开股东大会...
中国掌控全球过半铜冶炼产能,美... 【文/观察者网 王恺雯】 面对中国在铜冶炼和精炼上的主导地位,美国试图通过关税及工业政策复兴国内铜产...
年内92宗IPO获受理 创业板... 来源:滚动播报 (来源:北京商报) 随着创业板深化改革持续推进,今年创业板IPO申报热度攀升,替代北...
SpaceX跌破IPO首日开盘... 来源:滚动播报 来源:中国基金报 【导读】SpaceX股价连续重挫 中国基金报记者 张舟 Space...
酒庄头条:在郎酒庄园,看见世界... 文/酒庄头条 中国酒业该向何处去?又如何走向国际市场?酿酒业是有根产业历史经典产业,郎酒以全球视野开...
100个选基指标|利润总额,真... 推荐阅读: 100个选基指标丨自然年度收益率,最简单,也最重要(第一期) 100个选基指标丨区间收益...
连云港开发区为AI“制药”按下... 从人才赋能、校地协同到产业落地,今年以来,连云港开发区通过一系列密集举措构建起全链条、立体化的产业赋...
1.08亿控股德维嘉:无锡振华... 一家传统汽车冲压件上市公司,正试图用一笔亿元级别的现金收购,为自己贴上“汽车智能化”的标签。 6月2...
ATFX:SpaceX下跌16... 来源:市场资讯 6月23日,ATFX汇评:美国航空航天代表性个股SpaceX,上市六个交易日,三个交...
嘉实基金李涛:长期视角决策未来... 嘉实成长共赢混合基金经理李涛表示, 投资理财本质上是一场长期主义的远行,权益投资本质是追求赚取产业与...
震裕科技可转债发行申请获深交所... 雷达财经 文|苏静 编|深海 6月23日, 震裕科技(300953)发布关于公司向不特定对象发行可转...