如果class1是class2的子类就返回True
注意:
1.检查是非严格行的检查(一个类也是本身的子类)
2.class2类对象组成的元组,只要class1是其中任何一个候选类的子类则返回True
3.其他情况会抛出一个TypeError异常
class Person:
pass
class Teacher:
pass
class Student(Father,Monther):
pass
result =issubclass(Student,Person)
result =issubclass(Student,(Teacher,Person))
注意:
1.如果第一个参数传的不是对象类型,则永远返回False
2.第二个参数不是类或者不是由类组成的元组,则抛出一个TypeError的异常
3.第一个参数是一个类的实例化对象,第二个是这个类对象时,返回True
class Teacher:
pass
t =Teacher()
result =isinstance(t,Teacher)
result =isinstance(t,(TT,Teacher))
查询对象是否有指定的属性
第一个是对象,第二个是属性名,用双引号串起来,否则报错
class Teacher:
name ="zhangsan"
def eat(self):
print("吃饭")
t =Teacher()
result =hasattr(t,"name ")
result =hasattr(Teacher,"name ")
返回对象指定的属性值,如果该对象没有其属性,则返回制定的默认值,如果没有属性还有没有设定默认返回值,则抛出一个AttrbuteError异常
class Teacher:
name ="zhangsan"
def eat(self):
print("吃饭")
t =Teacher()
result =getattr(t,"name ")
result =getattr(t,'age','-1')
如果对象没有属性值,则设定对象指定的属性值
class Teacher:
name ="zhangsan"
def eat(self):
print("吃饭")
t =Teacher()
result =getattr(t,"name ")
result =setattr(t,'height',180)
删除对象是否有指定的属性,如果对象没有其属性值,则抛出一个AttrbuteError异常
class Teacher:
name ="zhangsan"
def eat(self):
print("吃饭")
t =Teacher()
result =delattr(t,'name ')
注意:object可为实例化对象,也可为类对象
含义:通过属性来设置属性,第一个参数获得属性的方法,第二个参数设置属性的方法,第三个参数删除属性的方法。
优点:不需要修改接口a,只需要修改函数名和property的参数名,通过一个或多个魔术发方法实现
补充(property详细会在魔术方法中)
class DD:
def __init__(self, x = 10):
self.x = x
def getx(self):
return self.x
def setx(self, x):
self.x = x
def delx(self):
del self.x
a = property(getx, setx, delx)
dd = DD()
print(dd.getx())
print(dd.x)
print(dd.a)
dd.a = 19
print(dd.getx())
print(dd.x)
print(dd.a)
del dd.a
实行结果:
10
10
10
19
19
19