# 类和对象2
class Cat:
pass
# 获取类的有关信息
help(Cat)
# python中的重载
"""
python中其实实现重载还是非常简单的,只要判断传入的数据类型。
然后根据类型的不同来采取不同的处理即可
那么如何检查数据对象的类型呢?可以使用isinstance()函数
"""
print(isinstance("999",str))
# 很容易得到返回结果为True
# 我们来看一个例子
"""
定义一个函数my_add(),该函数接受两个参数,当传入的两个参数的类型一致且位int或者float时
返回这两个数的和,如果时字符串,则返回将字符串连接后的字符串,如果是列表,
则将后一个列表作为一元素追加到前面的列表的末尾,其它情况返回None
"""
def my_add(f,b):
if (isinstance(f,int) and isinstance(b,int)) or (isinstance(f,float) and isinstance(b,float)):
return f+b
elif isinstance(f,str) and isinstance(b,str):
return f+b
elif isinstance(f,list) and isinstance(b,list):
f.append(b)
return f
else:
return None
print(my_add(1,2),my_add(1.2,2.4),my_add("444","222"),my_add([1,2,3,4],[1,2,3]),my_add(1,[1,22]))
# 变长参数列表
"""
定义语法如下
def function_name(*args):
statements
说明:*args 出现在参数列表中时,意味着传入的所有参数都将塞入一个列表中,
而你在函数定义中使用args来引用这个列表
"""
def f(n,*args):
for i in range(len(args)):# for i in range(len(args)): 这么写应该更保险
print(args[i])
f(3,1,2,3)
f(4,1,2,3,4)
# 继承
"""
简单来说当一个类继承另一个类时,它将自动获得后者的方法和属性;对于这些方法和属性,可保持不变
也可以进行重写,一个类继承另一个类时,前者被称为子类,后者被称为父类或者超类,继承基本语法如下
class class_name(base_class):
class_definitions
"""
class Pet(object):
def __init__(self,name,age):
self.name=name
self.age=age
class Dog(Pet):
# Dog 类继承自Pet类,已经具有name和age属性
def speak(self):
print(self.name,"speak")
my_Dog=Dog('lili',3)
my_Dog.speak()
# Fraction 类
"""
需要先引用:from fraction import Fraction
我们通过例子来看看它们的用途
"""
from fractions import Fraction
a=Fraction("1/2")
b=Fraction("2/3")
print(a+b)
print(type(a))
"""
上面的两条语句输出结果如下
7/6
<class 'fractions.Fraction'>
Fraction类可以准确的存储1/3这类的有理数
"""
"""
本章闲谈:
子类可以调用基类的任何方法,为此可以结合使用基类名和句点(.)表示法
class Dog(Pet):
def __init__(self,name,age,toy):
self.toy=toy
pet.__init__(self,name,age)
"""
#Python##读书笔记##笔记#