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

佛山网站建设哪儿有商品关键词举例

佛山网站建设哪儿有,商品关键词举例,国家重点项目建设网站,全国火车站等级最新排名python之对象 类与对象 类就是定义种类的东西的方式,它反映了在程序领域中的真实对象。对象则是类创建的实例。类是一种产生实例的工厂 class Foo:def __init__(self):passdef buy(self)pass obj Foo() 在上面,Foo就是一个类,而obj则是类创建…
python之对象

类与对象

类就是定义种类的东西的方式,它反映了在程序领域中的真实对象。对象则是类创建的实例。类是一种产生实例的工厂

class Foo:def __init__(self):passdef buy(self)pass
obj = Foo()

在上面,Foo就是一个类,而obj则是类创建的实例-->对象。

继承

在python中,实例从类中继承,而类继承于父类。

class Foo:def __init__(self):passdef buy(self)passclass Foo1(Foo):def buy(self):print("buy")

当子类调用父类方法时,使用super()方法

class Foo1(Foo):def __init__(self):super().__init()

类的特性

静态字段:

静态字段存在类中,如

class Foo:def __init__(self,name):self.name = namecountry = 'China'

country就是静态字段,self.name就是普通字段

普通字段属于对象,而静态字段则属于类(根据命令空间可知)。当对象在搜索属性时(obj.country),会在对象内搜索属性,然后在其上所有可读的类(使用继承搜索流程)静态字段在内存中只保存一份,而普通字段第个对象都要保存一份。对象中共同的字段可以用静态字段,这样就不用重复创建字段,在类中保存一份。

静态方法

由类调用,通过staticmethod装饰;类方法,由类调用,至少有一个cls参数,执行类访问时,自动将调用该方法的类复制给cls。普通方法,由对象调用,至少有一个self参数,执行该方法时,自动将点号前面的对象(执行方法的对象)赋给self。

class Foo:@staticmethod       #静态方法def func(arg1, arg2):print(arg1, arg2)@classmethod       #类方法def func1(cls):print(cls)def func2(self):         #普通方法print("normal method")
obj = Foo()
obj.func(1,2)
obj.func1()  
obj.func2()

相同点,对于所有方法而言,均属于类中,所以只在内在中保存一份
不同点,方法调用者不同,调用方法传入的参数也不同。

方法当作字段访问

class Foo:@propertydef show(self):print('show')
Foo.show

当方法作字段时,可以像字段那样进行修改,但是需要装饰

class Foo@property      def show(self):print('show')@end.setterdef show(self):passobj = Foo()
obj.end= '123'

成员修饰符

私有成员,只能内部访问,只能自己访问,子类也不能访问

class Foo:__name = '...'     #私有成员def fetch():print(__name)
Foo.fetch()

但是可以通过 _类名__name 访问

对象后面加括号:

    obj = Foo()obj()   #执行对象的__call__ 方法

索引与分片

对实例的索引和分片运算,调用__getitem__方法。赋值使用__setitem__方法。

class Foo:data = [1,2,3,4,5]def __getitem__(self, index):return self.data[index]def __setitem__(self, index, value):self.data[index] = valuedef __delitem__(self, index):pass
obj = Foo()
obj['abc'] = 'abc'  #当通过索引赋值,则会调用__setitem__
del obj['abc']  #通过索引删除时,调用__delitem
ret = obj['abc']   #通过索引取值,调用__getitem__

_ __getitem__也可以是python中一种重载迭代的方式 。如果在类中定义了这个方法,则for在每次循环时都会调用_getitem_ 这个方法。 _

class Foo:def __getitem__(self, index):return self.data[index]
obj = Foo()
obj.data = [1,2,3,4,5]
for i in obj:print(i, end=' ')
#结果----> 1 2 3 4 5

索引使用get/setitem 而点号使用get/settattr方法,在反射上用到这两个方法。判断和获取方法。而导入模块则用_import_()这个方法

属性引用

当进行点号运算时,则会调用__getattr__方法。

class Foo:#重写__getattr__def __getattr__(self, attrname):if attrname == 'age':return 40else:raise AttributeError,attrnameobj = Foo()
obj.age   #return 40
obj.name  #return error

而进行属性赋值时,则调用__setattr_方法
如obj.name='xxx',则内部会调用self._setattr_('attr', value)。而赋值操作又会调用_setattr_
,导致无穷递归循环。如果想使用这个方法,则要通过字典做索引运算来做赋值。

class Foo:def _setattr__(self, attr, value):self.__dict__[attr] = valueobj = Foo()
obj.name='xxoo' #赋值操作调用__setattr__方法

迭代器对象

之前我们使用了__getitem__方法来迭代对象,但python中的所有迭代都使用__iter__方法。迭代环境是通过调用内置函数iter去尝试寻找__iter__方法来实现的,而这种方法应该返回一个迭代器对象,如果己经提供,python就会重复调用这个迭代器的next方法,直到发生异常。如果没有找到__iter__方法,则会调用 __getitem__方法。

class Foo:def __init__(self, start, stop):self.value = start - 1self.stop = stopdef __iter__(self):return selfdef __next__(self):if self.stop == self.value:raise StopIterationself.value += 1return self.value ** 2obj = Foo(1,5)
for i in obj:print (i)   #结果 --->1,4,9,16,25
X = foo(1,10)
I = iter(X)
next(I)  #1
next(I)  #4
posted on 2017-01-10 23:17 xiaobaitu 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/baitutu/p/6271254.html

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

相关文章:

  • 巢湖网站建设电话长春做网络优化的公司
  • 广州市建设用地供应计划网站网站营销软文
  • 海阳做网站推广网站源码
  • 做效果图比较好的模型网站中国十大搜索引擎排名
  • 渭南建设用地规划查询网站淘宝店铺买卖交易平台
  • 网页制作与网站建设试题新品牌推广方案
  • 网站服务器到期了怎么续费5188关键词挖掘工具
  • 公司做网站注意事项做网站设计的公司
  • 闵行区教育局优化网站链接的方法
  • 怎么上传自己的网站深圳龙岗区优化防控措施
  • 国外游戏代码网站网站免费seo
  • 如何学做网站优化百姓网推广电话
  • 现在宁波做网站网站seo思路
  • 广州做网站的公司哪家好seo培训公司
  • 一般做网站都在什么网做视频号怎么付费推广
  • 如何在电影网站中做淘客媒体宣传推广方案
  • 理卖做各视频网站的会员代运营是什么意思
  • 马鞍山网站建设咨河南网站建设优化技术
  • 网站开发从入门到精通最佳磁力吧ciliba搜索引擎
  • 常州微信网站建设服务有链接的网站
  • 汉爱手表官方网站快手刷粉网站推广
  • 开锁做网站哪个好超级seo工具
  • wordpress会员制seo网站建设优化
  • javaee做网站安全深圳百度seo培训
  • 手机网站底部广告代码衡水seo优化
  • 个人商城网站备案火星培训机构收费明细
  • web与网站开发一样吗做网站的软件叫什么
  • 网络建站免费网址个人开发app去哪里接广告
  • 泉州网站公司自己建网站怎么建
  • 朝阳区疫情最新消息seo销售好做吗
  • 音视频学习(四十二):H264帧间压缩技术
  • docker磁盘空间不足解决办法
  • 在服务器无网络的环境下安装 VS Code Remote-SSH 组件
  • Softhub软件下载站实战开发(十九):软件信息展示
  • Openlayers 面试题及答案180道(121-140)
  • 移动端开发的package命名规范