4.1 轻松看对象
除了面向过程的编程范式,Python还支持面向对象的编程范式。
2.类
把相近的东西归为一类,而且给这个类起一个名字。
需要用到:class函数
用法:class 类名(对象类别)
statement
区分属性:①数据性:e.g. feature=True
②行为:e.g. def (行为名)(self,参数)
statement
3.对象
定义:对象是类的实例:summer=Bird()
对属性的引用:对象.属性:summer.chirp("jijiji")
对对象个性的修改:
①通过行为和self:def set_color(self,color)
self.color=color(给定的参数)
②特殊方法:_init_()、_add_().....(在方法名前后加两个下划线)
在引入对象的同时定义参数
self:可以在一个方法内部调用同一类的其他方法
4.2 继承者们
1.子类
①子类:拥有父类的所有属性,同时可定义子类的特有属性,还可替换。
②继承:子类拥有父类的所有属性。
2.属性覆盖
使用同名属性名,父类的属性会被子类覆盖。
super():一个内置类,能产生指代父类的对象。通过super,我们在子类的同名方法中调用了父类的方法。
4.3 那些年,错过的对象
查找类的名字:type()
查询类的属性:dir()、help()
①列表对象:
pass:特殊关键字,用于说明,在该语法结构中“什么都不做”,保持结构完整性
我们看到类还有许多“隐藏技能”。比如下面一些list的方法,可以返回列表的信息:
>>>a = [1, 2, 3, 5, 9.0, "Good", -1, True, False, "Bye"]
>>>a.count(5) # 计数,看总共有多少个元素5
>>>a.index(3) # 查询元素3第一次出现时的下标
>>>a.append(6) # 在列表的最后增添一个新元素6
>>>a.sort() # 排序
>>>a.reverse() # 颠倒次序
>>>a.pop() # 去除最后一个元素,并将该元素返回。
>>>a.remove(2) # 去除第一次出现的元素2
>>>a.insert(0,9) # 在下标为0的位置插入9
>>>a.clear() # 清空列表
②元组与字符串对象
>>>a = (1, 3, 5)
>>>a.count(5) # 计数,看总共有多少个元素5
>>>a.index(3) # 查询元素3第一次出现时的下标
>>>a="abc"
>>>a.index("c")
>>>str = "Hello World!"
>>>sub = "World"
>>>str.count(sub) # 返回:sub在str中出现的次数
>>>str.find(sub) # 返回:从左开始,查找sub在str中第一次出现的位置。 #如果str中不包含sub,返回 -1
>>>str.index(sub) # 返回:从左开始,查找sub在str中第一次出现的位置。 #如果str中不包含sub,举出错误
>>>str.rfind(sub) # 返回:从右开始,查找sub在str中第一次出现的位置 #如果str中不包含sub,返回 -1
>>>str.rindex(sub) # 返回:从右开始,查找sub在str中第一次出现的位置 # 如果str中不包含sub,举出错误
>>>str.isalnum() # 返回:True,如果所有的字符都是字母或数字
>>>str.isalpha() # 返回:True,如果所有的字符都是字母
>>>str.isdigit() # 返回:True,如果所有的字符都是数字
>>>str.istitle() # 返回:True,如果所有的词的首字母都是大写
>>>str.isspace() # 返回:True,如果所有的字符都是空格
>>>str.islower() # 返回:True,如果所有的字符都是小写字母
>>>str.isupper() # 返回:True,如果所有的字符都是大写字母
>>>str.split([sep, [max]]) # 返回:从左开始,以空格为分隔符(separator),# 将str分 割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以 # str.split(",")的方式使用其他分隔符
>>>str.rsplit([sep, [max]]) # 返回:从右开始,以空格为分隔符(separator),# 将str分 割为多个子字符串,总共分割max次。# 将所得的子字符串放在一个表中返回。可以以 # str.rsplit(",")的方式使用其他分隔符
>>>str.join(s) # 返回:将s中的元素,以str为分隔符, # 合并成为一个字符串。
>>>str.strip([sub]) # 返回:去掉字符串开头和结尾的空格。 # 也可以提供参数sub,去掉位于字符串开头和结尾的sub
>>>str.replace(sub, new_sub) # 返回:用一个新的字符串new_sub替换str中 # 的sub
>>>str.capitalize() # 返回:将str第一个字母大写
>>>str.lower() # 返回:将str全部字母改为小写
>>>str.upper() # 返回:将str全部字母改为大写
>>>str.swapcase() # 返回:将str大写字母改为小写,小写字母改为大写
>>>str.title() # 返回:将str的每个词(以空格分隔)的首字母# 大写
>>>str.center(width) # 返回:长度为width的字符串,将原字符串放入# 该字符串中 心,其他空余位置为空格。
>>>str.ljust(width) # 返回:长度为width的字符串,将原字符串左对# 齐放入该字符串,其 他空余位置为空格。
>>>str.rjust(width) # 返回:长度为width的字符串,将原字符串右对齐放入# 该字符串,其 他空余位置为空格。
③词典对象
for k in example_dict.keys():
print(example_dict[k])
for v in example_dict.values():
print(v)
for k,v in example_dict.items():
print(k, v)
用clear()方法,清空整个词典:
example_dict.clear() # 清空example_dict,example_dict变为{}
4.4 意想不到的对象
①循环对象:包含有一个_next_()方法,这个方法的目的是生成循环的下一个结果。在生成过循环的所有结果之后,该方法将抛出StopIteration异常。循环接收到这个异常,就会知道循环已经结束,将停止调用__next__()。
手动循环例子:
>>>example_iter = iter([1, 2])
>>>example_iter.__next__() # 显示1
>>>example_iter.__next__() # 显示2
>>>example_iter.__next__() # 出现StopIteration异常。
我们可以把 循环对象包裹在for中自动进行循环:
for itemin iter([1, 2]):
print(item)
相对于序列,循环对象的好处在于:不用在循环还没开始的时候,就生成要使用的元素。所有要使用的元素可以在循环过程中逐渐生成。这样,不仅节省了空间,提高了效率,还会使编程更加灵活。
生成器:自定义循环对象。
②函数对象
任何一个有_call_()特殊方法的对象:
class SampleMore(object):
def __call__(self, a):
return a + 5
add_five = SampleMore() # 生成函数对象
print(add_five(2)) #像一个函数一样调用函数对象,结果为7。
③模块对象
Python中的模块对应一个.py文件
语法:import xxx、from xxx import xxx
引入模块的所有属性:from xxx import *
也可以用对象.属性的方式调用。
④异常对象
try等捕捉到的程序中出现的异常。
except… as…:用新的变量代表捕获到的类型对象。
网友评论