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

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

相关内容

热门资讯

阿里千问App全球首发点外卖、... 1月15日,阿里举行千问App发布会, 阿里巴巴(BABA.US)集团副总裁吴嘉宣布,千问App全面...
携程港股、美股放量跌近20% 【大河财立方消息】1月15日,携程港股、美股双双大跌。 截至发稿,港股携程集团跌幅18.53%,美股...
淳厚基金获国资入主!管理规模缩... 淳厚基金获得长宁国投入主,但是市场声誉遭遇重挫,机构投资者纷纷撤出。 文/每日财报 楚风 随着国有...
「死了么」爆火,1亿独居群体被... 「核心提示」 独居时代下的深层焦虑,让“死了么”迎来短暂流量狂欢。不过,这款低门槛应用,拿什么...
2025年我国跨境电商进出口2... 一、明星品牌 1、美国奢侈品零售商萨克斯环球申请破产保护 美国高端百货集团萨克斯环球(Saks Gl...
卫龙前CEO孙亦农入职大窑出任... 红星资本局1月15日消息,红星资本局从大窑处了解到,卫龙(09985.HK)前CEO孙亦农已加入大窑...
市场利好持续提振港股医药股 东... 财联社1月15日讯(编辑 胡家荣)今日港股医药板块迎来强劲反弹,多只个股表现亮眼。截至发稿,东曜药业...
技术派登顶!2026浙江危机公... 2026年危机公关行业正经历近十年来最深刻的范式革命。当抖音热搜的存活周期缩短至3小时、AI生成虚假...
雷军官宣今晚直播:与汽车媒体一... 2026年1月15日,小米创办人,董事长兼CEO雷军在社交媒体平台发文称,“上次直播后,很多网友希望...
阿里千问宣布接入淘宝、支付宝、... 1月15日,阿里千问App宣布全面接入淘宝、支付宝、淘宝闪购、飞猪、高德等阿里生态业务,在全球首先实...
黄金投资交易入门:定义与风险评... 黄金投资交易是以黄金为交易标的的金融投资行为,核心是通过把握黄金价格的波动规律,以低买高卖的方式赚取...
第六批高值医用耗材集采开标,涉... 图片来源:视觉中国 蓝鲸新闻1月14日讯(记者 屠俊)据国家医保局官微信息显示,1月13日,第六批国...
瑞银:中国AI不堆卡、重效率,... “中国AI行业不存在美国式泡沫,反而将在模型出海、应用爆发、算力替代三大主线迎来系统性机遇。”1月1...
小鹏汇天冲击港股IPO:低空经... 2026年刚刚开始,小鹏汇天秘密提交港股IPO申请的消息就不胫而走。 有知情人士透露,小鹏汽车已聘请...
原创 马... 这将是一段动荡的旅程。 一 几周前,美国德州特斯拉超级工厂内,马斯克接受一次特殊访谈,预言2026。...
梁文锋旗下幻方量化,去年收益率... 每经记者|杨建 每经编辑|何小桃 叶峰 2025年A股市场持续火热,百亿私募交出了怎样的成绩单?据...
宽基ETF规模大增的三大理由 2026年,A股市场开局向好。Wind资讯数据显示,截至1月14日,开年以来ETF总规模增长超220...
冬季护眼 “睛”彩相伴|武汉普... 冬季天气寒冷干燥,室内取暖设备的使用让空气湿度降低,加上户外活动减少、长时间近距离用眼成为常态,干眼...
白银首破92美元,金铜锡拉升创... 2026年开年以来,全球金属市场迎来新一轮狂欢。 1月14日亚太交易时段,现货白银(伦敦银现)史上首...