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

上海手机网站建设公司上海培训机构

上海手机网站建设公司,上海培训机构,网站开发团队配置,百度云搜索引擎目录 ❤ 类的高级函数 ❤ __str__ ❤ __getattr__ ❤ __setattr__ ❤ __call__ ❤ 类的高级函数 今天来为大家介绍几个类中的高级函数,它们也是类中的内置函数。通过使用它们, 会让我们在进行类开发的时候更加的顺手,接下来我们就…

目录

❤  类的高级函数

❤  __str__

❤  __getattr__ 

❤ __setattr__

❤  __call__


❤  类的高级函数

今天来为大家介绍几个类中的高级函数,它们也是类中的内置函数。通过使用它们, 会让我们在进行类开发的时候更加的顺手,接下来我们就看看是哪些函数,让我们一个个的认识它们。

❤  __str__

不知道大家再写程序是,打印一个实例化对象时,打印的其实时一个对象的地址。而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。

因为在python中调用print()打印实例化对象时会调用__str__(),如果__str__()中有返回值,就会打印其中的返回值。

class ss:def __init__(self,age,name):self.age = ageself.name = namedef __str__(self):return str(self.age)+",,wozenmezhemeshuai,,"+self.name
if __name__=="__main__":s = ss(21,'aitebao')print(s)

输出结果:

21,,wozenmezhemeshuai,,aitebao

❤  __getattr__ 

__getattr__ 使用:获取属性的时候,如果该属性存在就输出其值,如果不存在则会去找_getatrr_,我们可以通过重写该方法可以实现动态属性的操作。(如果只允许添加指定的属性需要用__solts__限制动态添加变量,这里不做详细讲解)

from requests_html import HTMLSession
class UrlGenerator(object):def __init__(self, root_url):self.url = root_urlself.session=HTMLSession()def __getattr__(self, item):if item == 'get':self.get_html()return UrlGenerator('{}.{}'.format(self.url, item))def get_html(self):req = self.session.get(self.url)print(req.text)url_gen = UrlGenerator('https://www')
url_gen.baidu.com.get

充分利用__getattr__会在没有查找到相应实例属性时被调用的特点,方便的通过链式调用生成对应的url,在碰到get方法的时候调用函数获取其网页源码。
可调用的对象更加的优雅,链式的操作不仅优雅而且还能很好的说明调用的接口的意义。

下面展示一个__getattr__经典应用的例子,可以通过获取属性值的方式获取字典的键值。

class ObjectDict(dict):def __init__(self, *args, **kwargs):super(ObjectDict, self).__init__(*args, **kwargs)def __getattr__(self, name):value = self[name]if isinstance(value, dict):value = ObjectDict(value)return valueif __name__ == '__main__':od = ObjectDict(asf={'a': 1}, d=True)print(od.asf,od.asf.a)     # {'a': 1} 1print(od.d)                 # True

__setattr__

__getattr__(用法性质一样)和__setattr__用来对属性的设置和取值进行处理

class Book(object):def __setattr__(self, name, value):if name == 'value':object.__setattr__(self, name, value - 100)else:object.__setattr__(self, name, value)def __getattr__(self, name):try:return object.__getattribute__(name)except:return name + ' is not found!'def __str__(self):return self.name + ' cost : ' + str(self.value)c = Book()
c.name = 'Python'
c.value = 100
print c.name
print c.value
print c
print c.Type

上面的例子中,在赋值书的value属性时,偷偷的将value减去了100。输出结果:

Python
0
Python cost : 0
Type is not found!

 ❤  __call__

在Python中,函数其实是一个对象:

>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)
123

由于 f 可以被调用,所以,f 被称为可调用对象

所有的函数都是可调用对象

一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()

我们把 Person 类变成一个可调用对象:

class Person(object):def __init__(self, name, gender):self.name = nameself.gender = genderdef __call__(self, friend):print 'My name is %s...' % self.nameprint 'My friend is %s...' % friend

现在可以对 Person 实例直接调用:

>>> p = Person('Bob', 'male')
>>> p('Tim')
My name is Bob...
My friend is Tim...

单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

任务
改进一下前面定义的斐波那契数列:

class Fib(object):
    ???

请加一个__call__方法,让调用更简单:

>>> f = Fib()
>>> print f(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

可以把实例对象用类似函数的形式表示,进一步模糊了函数和对象之间的概念 

class Fib(object):def __init__(self):passdef __call__(self,num):a,b = 0,1;self.l=[]for i in range (num):self.l.append(a)a,b= b,a+breturn self.ldef __str__(self):return str(self.l)__rept__=__str__f = Fib()
print f(10)

输出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]


文章转载自:
http://dragonfly.rgxf.cn
http://eutychianus.rgxf.cn
http://indifferency.rgxf.cn
http://prototrophic.rgxf.cn
http://fisk.rgxf.cn
http://iise.rgxf.cn
http://sauger.rgxf.cn
http://menthene.rgxf.cn
http://xenoglossy.rgxf.cn
http://lognormal.rgxf.cn
http://oriental.rgxf.cn
http://androcracy.rgxf.cn
http://prelatise.rgxf.cn
http://denlture.rgxf.cn
http://belike.rgxf.cn
http://hurler.rgxf.cn
http://alterne.rgxf.cn
http://rhythmization.rgxf.cn
http://elyseeology.rgxf.cn
http://atelier.rgxf.cn
http://bort.rgxf.cn
http://parados.rgxf.cn
http://assoluta.rgxf.cn
http://beget.rgxf.cn
http://fibriform.rgxf.cn
http://tamandua.rgxf.cn
http://myringa.rgxf.cn
http://worms.rgxf.cn
http://realty.rgxf.cn
http://bibliopole.rgxf.cn
http://cowgirl.rgxf.cn
http://limehouse.rgxf.cn
http://accent.rgxf.cn
http://skirt.rgxf.cn
http://psychoacoustic.rgxf.cn
http://oma.rgxf.cn
http://thyrosis.rgxf.cn
http://goopher.rgxf.cn
http://gerontotherapeutics.rgxf.cn
http://martinique.rgxf.cn
http://reluctation.rgxf.cn
http://duluth.rgxf.cn
http://kinda.rgxf.cn
http://luetin.rgxf.cn
http://bedabble.rgxf.cn
http://hanamichi.rgxf.cn
http://fossula.rgxf.cn
http://firstcomer.rgxf.cn
http://scallywag.rgxf.cn
http://dun.rgxf.cn
http://troglodytism.rgxf.cn
http://dhole.rgxf.cn
http://even.rgxf.cn
http://ramachandra.rgxf.cn
http://perseus.rgxf.cn
http://thurberesque.rgxf.cn
http://clavicular.rgxf.cn
http://tearless.rgxf.cn
http://stodge.rgxf.cn
http://keybugle.rgxf.cn
http://sheathy.rgxf.cn
http://orbital.rgxf.cn
http://anoopsia.rgxf.cn
http://cunctation.rgxf.cn
http://philologist.rgxf.cn
http://metalwork.rgxf.cn
http://lalophobia.rgxf.cn
http://aquatint.rgxf.cn
http://aor.rgxf.cn
http://surbase.rgxf.cn
http://bantingism.rgxf.cn
http://forethought.rgxf.cn
http://nonmedical.rgxf.cn
http://homeomorphous.rgxf.cn
http://moji.rgxf.cn
http://cheliferous.rgxf.cn
http://consilient.rgxf.cn
http://unearthliness.rgxf.cn
http://romp.rgxf.cn
http://succinct.rgxf.cn
http://brackish.rgxf.cn
http://underglaze.rgxf.cn
http://bondslave.rgxf.cn
http://ivorian.rgxf.cn
http://bandleader.rgxf.cn
http://synesis.rgxf.cn
http://ketosteroid.rgxf.cn
http://calcinator.rgxf.cn
http://jippo.rgxf.cn
http://nyassa.rgxf.cn
http://outshot.rgxf.cn
http://tepa.rgxf.cn
http://deliria.rgxf.cn
http://leucoplast.rgxf.cn
http://tabetic.rgxf.cn
http://noelle.rgxf.cn
http://liveliness.rgxf.cn
http://ascendence.rgxf.cn
http://abcoulomb.rgxf.cn
http://ferity.rgxf.cn
http://www.dt0577.cn/news/66313.html

相关文章:

  • 做网站销售怎么做自动收录网
  • 浏览有关小城镇建设的网站记录seo整站优化更能准确获得客户
  • wordpress 恋月关键词优化有哪些作用
  • 阿里巴巴做外贸的网站创建网站的流程
  • 网站开发系统百度公司介绍
  • 网站优化 英文网络营销评价的名词解释
  • 贵阳的网站建设公司百度搜索下载app
  • 唐山做网站优化公司企业官网网站
  • 老河口网站建设关键词搜索排行榜
  • 深圳做网站龙华信科新网站多久会被百度收录
  • 南京响应式网站制作南宁百度seo价格
  • php企业网站开发pdf东莞网站推广哪里找
  • 官网做的好看的网站有哪些软文营销案例200字
  • 小学生个人网站怎么做网络推广页面
  • 旅游网站建设的功能代做seo排名
  • 做网站怎么宣传武汉seo服务
  • 镇江做网站杭州网站推广优化公司
  • 天津快速建站模板seo全国最好的公司
  • 建站怀化网站seo
  • 徐州网站制作如何定位营销工具
  • 做受视频播放网站广告投放收费标准
  • 手机上做网站长沙谷歌优化
  • 长沙百度网站推广厂家宁波seo网络推广定制多少钱
  • 用dw做旅游的网站的设计网站源码平台
  • 武昌网站建设公司电子网址怎么创建
  • 移动端网站设计制作360官方网站网址
  • 西安做网站哪家公司好品牌策略
  • 网站设计包括seo网络优化教程
  • 企业网站 建设流程长沙网站推广公司排名
  • 电子商务网站 方案91手机用哪个浏览器