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

做网商要创建网站吗中国免费网站服务器2020

做网商要创建网站吗,中国免费网站服务器2020,什么网站做家具外贸好呢,上海房价2022年最新房价类 基础术语 使用 类名() 创建对象,创建对象 的动作有两步 在内存中为对象 分配空间 调用初始化方法 __init__ 为对象初始化 对象创建后,内存中就有了一个对象的 实例 通常会把 创建出来的 对象 叫做 类 的实例 创建对象的 动作 叫做 实例化 对象的…

基础术语

  • 使用 类名() 创建对象,创建对象 的动作有两步

    • 在内存中为对象 分配空间

    • 调用初始化方法 __init__ 为对象初始化

  • 对象创建后,内存中就有了一个对象的 实例

  • 通常会把

    • 创建出来的 对象 叫做  的实例

    • 创建对象的 动作 叫做 实例化

    • 对象的属性 叫做 实例属性

  • 在程序执行时

    • 对象各自拥有自己的 实例属性

    • 调用对象方法,可以通过 self.  访问自己的属性或方法

  • 每一个对象 都有一个自己独立的内存空间,互不干涉

  • 多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部

类是一个特殊的对象

  • Python 中 一切皆对象

  • 类是一个特殊的对象,同样会被加载到内存中,类对象在内存中只有一份

  • 一个类可以创建出多个对象实例

  • 除了封装 实例 属性和方法外,类对象还可以拥有自己的属性和方法

  • 通过 类名. 的方式可以访问类的属性和方法

示例

class Animal:# 定义一个 类 属性count=0def __init__(self,name):self.name=nameAnimal.count=Animal.count+1animal1=Animal("小白")
animal2=Animal("小黑")
animal3=Animal("小绿")print("查看类属性的变化次数:%d" %Animal.count)
 

输出结果

类方法

  • 类方法 就是针对 类对象 定义的方法

    • 类方法 内部可以直接访问 类属性 或者调用其他的 类方法

  • 类方法需要用 修饰器 @classmethod 来标识,告诉解释器这是一个 类方法

  • 类方法的 第一个参数 应该是 cls

    • 由 哪一个类调用的方法,方法内的 cls就是哪一个类的引用

    • 这个参数和 实例方法的第一个参数 self 类似

    • 不使用 cls ,使用其他名称也可以,习惯问题

  • 通过  类名. 调用类方法,不需要传递 cls 参数

  • 在方法内部,可以通过 cls. 访问类的属性或类的方法

语法

@classmethod
def 类方法名(cls):pass
 

示例

class Animal:# 定义一个 类 属性count=0def __init__(self,name):self.name=nameAnimal.count=Animal.count+1# 定义一个 类 方法@classmethoddef show_count(cls):print("我是类方法,类属性的值是:%d"%cls.count)Animal("小白")
Animal("小黑")
# 调用类 方法
Animal.show_count()

输出结果

静态方法

  • 使用修饰器 @staticmethod 来标识

  • 通过 类名. 调用 静态方法

  • 使用场景

    • 不需要访问 实例属性 或者调用 实例方法

    • 不需要访问 类属性 或者调用 类方法

语法

@staticmethod
def 静态方法名():pass

示例

class Person:# 定义类属性count=0def __init__(self,name):self.name=name# 定义一个静态方法,静态方法不能调用 类方法或属性 与 实例方法或属性@staticmethoddef static_test():print("我是一个静态方法,不能调用类方法与属性 和实例方法与属性")# 静态方法直接用 类名调用
Person.static_test()

输出结果

综合练习示例

"""
需求:窗口取票
票数是共有的
每个人取的数量不一样操作提示信息,不与任何属性或方法关联
"""
class Ticket:# 总共 10 张票totalTicket=10def __init__(self,name):self.name=name# 操作说明,可以使用静态方法实现@staticmethoddef show_instructions():print("操作说明:取票的数量不能超过票总数量!!!")# 显示总票数,可以使用 类方法@classmethoddef show_ticket(cls):print("还剩余的票数有:%s 张" %cls.totalTicket)# 取票,可以使用实例方法def take_ticket(self,num):Ticket.totalTicket=Ticket.totalTicket-numprint("%s 取走了 %d 张票..."%(self.name,num))# 取票的操作说明 
Ticket.show_instructions()# 开始取票,张三 取3张, 李四取4张
zs=Ticket("张三")
zs.take_ticket(3)
#查看剩余票数
Ticket.show_ticket()ls=Ticket("李四")
ls.take_ticket(4)
#查看剩余票数
Ticket.show_ticket()

输出结果

单例模式

设计模式

  • 设计模式 是针对某一特定问题的解决方案,由人们总结和提炼的

  • 使用设计模式 是为了可重用代码,使代码更容易理解,保证代码可靠性

  • 单例设计模式

    • 目的: 让类创建的对象,在系统中只有 唯一一个

    • 每一次执行 类名() 返回的内存地址引用,都是同一个

__new__方法

  • 使用 类名() 创建对象时, Python的解释器首先会调用 __new__ 方法为对象 分配内存空间

  • Python的解释器获得对象的引用后,将引用作为第一个参数,传递给 __init__ 方法

  • 重写 __new__ 方法的代码非常固定

  • 重写 __new__ 方法一定要 return super().__new__(cls)

  • 否则 Python的解释器 得不到对象引用,就不会调用初始化方法

  • __new__ 是一个静态方法,在调用时需要 主动传递 cls 参数

示例

class SingleClass():# 定义类实例对象instants=None# 重写 __new__ 方法def __new__(cls,*agrs,**kwargs):print("创建对象方法.....")if SingleClass.instants== None:# 初始化实例对象,调用父类方法SingleClass.instants=super().__new__(cls)return SingleClass.instantsdef __init__(self):print("初始化方法。。。。")# 单例模式 ,不管创建多少次实例,实际上都是同一个
s1=SingleClass()
s2=SingleClass()
s3=SingleClass()
print(s1)
print(s2)
print(s3)

输出结果

以上的方法虽然解决了对象只会创建一次的问题,但是初始化的方法还会调用多次,消耗内存。  此处可以 增加一个 initFlag 的标记,一但初始化后就打上标记,以后就不再进行初始化。  改造代码如下:

class SingleClass():# 定义类实例对象instants=None# 定义一个初始化标记initFlag=False# 重写 __new__ 方法def __new__(cls,*agrs,**kwargs):    if SingleClass.instants== None:print("创建对象方法.....")# 初始化实例对象,调用父类方法SingleClass.instants=super().__new__(cls)return SingleClass.instantsdef __init__(self):if SingleClass.initFlag:returnprint("初始化方法。。。。")SingleClass.initFlag=True# 单例模式 ,不管创建多少次实例,实际上都是同一个
s1=SingleClass()
s2=SingleClass()
s3=SingleClass()
print(s1)
print(s2)
print(s3)

输出结果

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注! 

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

相关文章:

  • react是网站开发搜索引擎营销的英文缩写
  • wordpress整站数据转移网站怎么打开
  • 网站建设广州天津seo排名扣费
  • 四川省的住房和城乡建设厅网站首页淄博网站推广
  • 河南那家做网站实力强长沙seo网络推广
  • 哈尔滨搭建网站软件公司
  • 百度联盟 网站备案2345浏览器下载
  • 江西建设厅网站证书查询如何在其他平台做推广
  • 做网站需要知道什么软件运营怎么做
  • dwcs3做网站广州网络推广公司有哪些
  • 廊坊做网站哪家好个人网站免费域名注册
  • 做化工贸易要用那些网站推广关键词优化排名软件怎么样
  • 亚洲男女做暖网站网络营销相关工作岗位
  • php网站模板下载百度集团
  • 网站制作app软件产品推广介绍
  • 网站底部悬浮代码江西百度推广开户多少钱
  • 开发设计移动网站建设下载百度手机助手
  • 梅州做网站需要多少钱二级域名查询入口
  • 做网站哪里需要用钱手机系统优化
  • it网站开发互联网服务平台
  • 温州营销网站公司电话可以搜索国外网站的搜索引擎
  • 网站购买域名app开发流程
  • 阿里云空间可以做网站吗漯河网站推广公司
  • 木樨园网站建设公司百度云搜索引擎网站
  • 网站建设与推广的区别搜索引擎有哪些
  • 做网站需要交管理费吗香港百度广告
  • 网站关键词做多了是不是影响权重什么推广方式能快速引流
  • 微网站趋势武汉百度快照优化排名
  • 支付网站建设查看浏览过的历史记录百度
  • 天津市网站建设软文推广名词解释
  • 基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现
  • 豆包 + 蘑兔 AI:你的创作搭子
  • 深入浅出设计模式——行为型模式之观察者模式 Observer
  • 安装AI高性能推理框架llama.cpp
  • Flink + Hologres构建实时数仓
  • MATLAB绘制水的蒸汽压曲线(Antoine方程)