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

Python的类和对象

类和对象

类的基本知识

实例方法

类的创建和JAVA么没什么区别,出来一个self用来在写各种方法是绑定实例。访问方法和变量就比较简单直接使用对象.方法|变量就行。

python目前我没法接受的是对象随时可以自己增加自己的属性,比如Person类只有name属性,但是定义一个实例p出来后可以通过p.age=20来直接增加属性。

python对象自己动态增加方法是无法主动绑定self,这就导致了如果你增加的方法需要访问对象本身的属性需要通过MethodType来实现self的先绑定再使用,代码如下:

def intro_func(self, content):print("我是一个人,信息为:%s" % content)# 导入MethodType
from types import MethodType# 使用MethodType对intro_func进行包装,将该函数的第一个参数绑定为p
p.intro = MethodType(intro_func, p)# 第一个参数已经绑定了,无须传入
p.intro("生活在别处")

这就等于给p增加了一个名为intro的方法,内容是intro_func函数,并且就绑定了自身。

类中的方法里的self就是调用者本身,由于过于灵活诞生了许多奇怪用法,详见133页。

实例方法甚至能通过类来调用,他们判断是不是实例方法的方式就是约定俗成的self参数。

类方法和静态方法

@classmethod修饰类方法,第一个参数cls自动绑定类

@staticmethod修饰静态方法,不会自动绑定参数

pyhon中@使用的函数修饰器本质直接改变了函数,详见p138,等于把被修饰函数当初参数扔进修饰函数。

python在类中写一段逻辑代码它也会被执行,执行时机是类被解析时,类似JAVA中的类加载时执行一次,然后也只会执行一次。

成员变量

类变量是属于类的,所以访问必须通过类来访问,当然python也支持通过类创建的对象来访问类变量,但是哪怕是在类中的方法来直接访问类变量也是错误的,例子如下:

class Address:detail = '广州'post_code = '510660'def info(self):# 尝试直接访问类变量# print(detail) # 报错# 通过类来访问类变量print(Address.detail)print(Address.post_code)# 通过类来访问Address类的类变量
print(Address.detail) # 输出 广州
addr = Address()
addr.info()
# 修改Address类的类变量
Address.detail = '佛山'
Address.post_code = '460110'
addr.info()

通过对象.类变量,本质还是通过类访问的,所以也可以通过这种方法来进行修改。

property函数好像JAVA中的get和set的一种使用了,好像是python里封装的体现。

在python中@property和@×××.setter就是JAVA中的get,setter方法,但是它修饰的属性名来自与方法名和注解名,详见P143。

python的封装机制

为了隐藏类中的成员, Python 玩了一个小技巧: 只要将 Python 类的成员命名为以双下画线开
头的, Python 就会把它们隐藏起来。

python封装的机制总结

ok,现在来总结一下python封装机制的使用,首先在类中定义的实例变量名以__开头,python会默认隐藏,外部无法直接访问,这跟JAVA中private修饰属性一样,然后和JAVA一样写俩个get和set方法,但是在python中可以多一步,property(getname, setname),写这一段,你如果在外面通过对象.属性的方式来访问或者修改属性,python可以主动帮你路由这俩个方法,可以不用向JAVA那样主动在外面通过.getset方法去硬性修改。

python的继承机制

python的继承机制第一句话就极为炸裂,它能直接集成多个父类😤😤😤。

多继承的话最后重写父类的构造方法,不然调用方法时可能会因为没初始化参数报错。

http://www.zskr.cn/news/66865.html

相关文章:

  • 筛选出“大概率上涨”的推荐股票列表
  • 注册为服务,开机自动启动
  • 2025年知名的高精度氯化氢传感器/氯化氢传感器厂家实力及用户口碑排行榜
  • 2025年热门的机用打包带/彩色印字打包带厂家最新推荐排行榜
  • 2025年佛山服务好的桶装水配送电话推荐,大型桶装水供应企业
  • 2025年江苏45#钢矩形方管生产厂家、矩形方管加工厂、Q5
  • 2025年口碑好的胶液乳化泵TOP品牌厂家排行榜
  • 2025年知名的非保温型抗爆墙/消防抗爆墙最新TOP厂家排名
  • 2025年比较好的衣柜平薄铰链/三维平薄铰链用户好评厂家排行
  • 实用指南:LSTM(Long Short-Term Memory)个人理解
  • PNP机器人将要亮相2025 ROS中国区大会|发表演讲、共探具身智能新未来 - 详解
  • 25fall 做题记录 - December - Amy
  • 2025年中国比较不错的服装定制专业加盟公司推荐:比较好的服
  • 增强AI股票预测分析报告 - 2025年12月01日
  • 2025年知名的脱模剂厂家推荐及选购参考榜
  • 【GitHub每日速递 20251201】30 秒部署热点助手,TrendRadar 让你告别无效信息轰炸!
  • 靠谱的地下室垃圾车厂家推荐排行榜?地下室垃圾车厂家 地下室垃圾车产品 地下室垃圾车供应厂家 地下室垃圾车工厂 地下室垃圾车生产厂家 地下室垃圾车源头厂家
  • 性价比高的汽车窗膜公司推荐排行榜单?汽车窗膜公司 汽车窗膜电话 汽车窗膜推荐 汽车窗膜服务商 汽车窗膜品牌 汽车窗膜供应商 汽车窗膜企业 汽车窗膜平台
  • 2025年靠谱的氩气表/氧气表乙炔表实力厂家TOP推荐榜
  • 2025年十大靠谱服装定制加盟品牌推荐,专业服装定制加盟哪家
  • 2025年郑州宠物剪毛培训十大推荐机构,有实践的宠物剪毛培训
  • 教学质量好的CAD设计电商培训品牌推荐排行榜?CAD设计电商培训品牌 CAD设计电商培训公司 CAD设计电商培训机构 CAD设计电商培训中心 CAD设计电商培训企业 CAD设计电商培训单位
  • Flask入门:轻松掌握API路由定义
  • 行业内可靠的共享办公空间公司推荐排行榜单?共享办公空间品牌 共享办公空间公司 共享办公空间推荐 共享办公空间出租 共享办公空间租赁
  • 2025年AI智能营销技术团队排行:刘艳兵工作室研发团队如何
  • 2025年FSD热泵特色厂家推荐:十大FSD热泵生产厂解析
  • 全自动咖啡机有哪些品牌?国内外主流品牌盘点
  • 电子纹身实时监测大脑疲劳技术解析
  • Oracle AI:使用SQL来实现融合检索和整个RAG流程
  • AI元人文与AI哲学:六十日跋涉后的思想相遇