day9博客

Posted laosun0204

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day9博客相关的知识,希望对你有一定的参考价值。

类中的__call__代表把一个类变成函数,加上括号就运行

class Reader(object):
def __init__(self, name, nationality):
self.name = name
self.nationality = nationality

def __call__(self):
print(\'Reader: %s Nationality: %s\' % (self.name, self.nationality))


r = Reader(\'Annie\', \'Chinese\') # 实例化类
r() # r()运行__call__里面的代码

 

类中的__str__的意思是返回一个对象的描述信息,需要返回一个字符串

class Person():
def __init__(self, name, age):
self.name = name
self.age = age

def __str__(self):
return \'名字是:%s,年龄是:%s\' % (self.name, self.age)


person = Person(\'张三\', 22)
print(person) # 打印对象就可以打印出__str__方法里返回的字符串

 

__str__和__repr__方法功能类似,如果没有添加__str__方法,Python 在需要该方法但找不到的时候,它会去调用__repr__方法,因此定义类的时候至少添加一个__repr__方法,这能保证自定义类中实现自我描述的功能

class Person(object):
"""如果__str__和__repr__方法都存在,优先打印__str__的返回值"""
def __init__(self, name, age):
self.name = name
self.age = age

def __repr__(self):
return \'名字是:%s,年龄是:%s\' % (self.name, self.age)

def __str__(self):
return \'哈哈哈\'


person = Person(\'张三\', 22)
print(person)

__new__方法和__init__的区别是以下几点:
1、继承自object的新式类才有__new__
2、__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别,__init__有一个参数self,__init__在__new__的基础上可以完成一些其它初始化的动作
3、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例,__init__不需要返回值
4、__new__比__init__先执行,使用时尽量使用__init__函数,不要去自定义__new__函数
5、__new__用于生成实例对象,利用这个方法和类的属性的特点可以实现设计模式的单例模式,单例模式是指创建唯一对象,单例模式设计的类只能实例

class CapStr(str):
def __new__(cls, old_string):
new_string = old_string.upper()
return str.__new__(cls, new_string)


a = CapStr(\'I very like python...\')
print(a) # 打印出I VERY LIKE PYTHON...

__doc__方法的作用打印出文档字符串,也就是注释里的内容

def find_str():
"""查找子字符串出现的次数"""
st = input(\'请输入目标字符串:\').strip()
sub_str = input(\'请输入子字符串:\').strip()
if sub_str in st:
res = st.count(sub_str)
print(\'子字符串在目标字符串中共出现的次数是%d\' % res)


print(find_str.__doc__) # 文档字符串,打印出注释里的内容
find_str()

以上是关于day9博客的主要内容,如果未能解决你的问题,请参考以下文章

DAY9-字符串笔记整理2018-1-19

为 Blogger 上的博客格式化代码片段 [关闭]

python基础-day9-函数

day9

重修课程day9(函数之有参函数)

Wordpress阻止访问wp admin€“wpsnipp.com网站你博客的Wordpress代码片段