当前位置: 首页 > 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.jsqmd.com/news/56605/

相关文章:

  • 筛选出“大概率上涨”的推荐股票列表
  • Ollama的安装及AI人工智能本地大模型的部署
  • 注册为服务,开机自动启动
  • 2025年知名的高精度氯化氢传感器/氯化氢传感器厂家实力及用户口碑排行榜
  • 深入解析:flask 框架的ORM 学习及应用
  • 2025年口碑好的衬氟呼吸阀定制厂家
  • 2025年靠谱的精密配电柜厂家推荐及采购参考
  • 2025年手动喷砂机公司推荐:手动模具喷砂机源头厂家与解析
  • 佛山口碑好的桶装水送水电话TOP5推荐:知名桶装水配送电话甄
  • 2025年比较好的空气炸锅冷冻薯条性能对比优选榜
  • 2025年热门的机用打包带/彩色印字打包带厂家最新推荐排行榜
  • 详细介绍:css样式学习
  • 2025年比较好的糖蜜转子泵/酱料转子泵厂家推荐及选择参考
  • 2025年佛山服务好的桶装水配送电话推荐,大型桶装水供应企业
  • Spring boot jdbc通用分页能力封装
  • 2025年评价高的BELDEN百通电缆百通总线线缆厂家最新推荐排行榜
  • 2025年热门的不锈钢标识标牌厂家最新推荐权威榜
  • 2025年江苏靠谱的微粉数控喷砂机源头厂家、移动式喷砂机源头
  • 2025年江苏45#钢矩形方管生产厂家、矩形方管加工厂、Q5
  • 2025年口碑好的胶液乳化泵TOP品牌厂家排行榜
  • 高性能AI股票预测分析报告 - 2025年12月01日
  • 2025年知名的非保温型抗爆墙/消防抗爆墙最新TOP厂家排名
  • 2025年比较好的衣柜平薄铰链/三维平薄铰链用户好评厂家排行
  • 2025首饰上门回收公司TOP5权威推荐:甄选专业奢品上门回
  • 2025年长三角Q390矩形方管供应商、矩形方管品牌供应商推
  • 实用指南:LSTM(Long Short-Term Memory)个人理解
  • 2025年质量好的小角度超薄铰链/衣柜超薄铰链厂家最新TOP实力排行
  • 2025专业名牌包/名表/珠宝上门回收公司TOP5权威推荐
  • 2025年度镀锌方管服务商家推荐:耐腐蚀镀锌方管定制生产优质
  • 《代码大全》读后感(7)