当前位置: 首页 > 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://www.tj-hxxt.cn/news/39837.html

相关文章:

  • ae如何做视频模板下载网站邯郸网站优化
  • 网站做百度竞价的标志页面优化的方法有哪些
  • 网站cms是什么北京互联网营销公司
  • 来年做那些网站能致富软文推广案例大全
  • 唐朝网站的地址快速刷排名的软件最好
  • 各种类型网站建设口碑好网络整合营销方案
  • 网站5建设需要学什么超级优化大师下载
  • 苏州网站制作哪家靠谱视频优化是什么意思
  • 酒店建设网站的优势有哪些怎样做网站推广啊
  • 深圳自适应网站制作网络营销专业学什么
  • 帮人家做网站难吗cpv广告联盟
  • 网站地域分站怎么做推广app的方法和策略
  • 网站建设 枫子科技关键词优化
  • 做网站需要做什么页面新平台怎么推广
  • 长沙做企业网站的公司网站优化推广哪家好
  • 免费网站建设模板下载seo如何优化的
  • 网站开发 技术指标微信营销推广的方式有哪些
  • lol网站建设网页设计实训报告
  • 沈总网站建设百度一下官网首页百度
  • 做网站哪家公司可靠seo推广人员
  • app制作软件企业排名优化价格
  • 网站开发学校有哪些海口网站建设
  • 这么做介绍网站的ppt爱站工具包手机版
  • 网站怎么做能赚钱站长工具同大全站
  • 省财政厅门户网站三基建设站长工具综合查询2020
  • 用flash做的网站欣赏百度百科查询
  • 上海做网站 公司防城港网站seo
  • 做的的网站怎样上传百度怎么投放自己的广告
  • wordpress限制用户组登陆后台搜狗seo怎么做
  • 做外贸没有网站需要什么条件结构优化设计