类 , 类对象 , 实例对象

class C: # 类定义coum = 0 # 类对象a = C() # 实例化b = C() # 实例化c = C() # 实例化dd = C() # 实例化a.coum # 实列化对象 0b.coum # 实列化对象 0c.coum # 实列化对象 0dd.coum # 实列化对象 0dd.pric = 100# 那么这个 pric 这个对象 只属于 dd 而类名C 里是没有pric这个属性的,## 那怎么认证呢? 使用 CC.__dict__ dd.__dict__## 那为什么会这样呢,? 当 dd 实例化属性对象的时候 它实际上是这么存的dd.self.coum =50# 现在使用 类名去修改, 那分别 a b c 是多少?C.counm += 100
查看答案密码:  123456
类中定义的 属性 是静态变量, 方法也一样, 就算类对象被删除,  它们依然是存放在内存中的, 只有这个程序被退出了 ,变量才会被释放
在大多数的情况下编程中应该考虑使用实列属性 , 比如 self.x self.y
而不要取使用类属性, 通常类属性是仅用来跟踪与类相关的值
class CC:def setXY(self,x,y):self.x = xself.y = ydef printXY(self):print(self.x,self.y)dd =CC()dd.setXY(12,15)print(dd.__dict__)print(CC.__dict__)del CCee =CC() # 打印报错信息, 因为CC类被删除了dd.printXY() # 能正常打印 12,15
相关的BlF 内置函数
issubclass(class, classinfo) class是classinfo 的子类吗
判断 class 是 classinfo 的子类 的话返回 True
- 一个类被认为是其自身的子类
 - classinfo 可以是类对象元祖, 只要class 与其中任何一个候选的子类, 则返回True
 
没个候选的类 是否是他得到子类
class A :passclass B(A) :passclass C:passprint(issubclass(B, A)) # 打印: True # 表示 B 是 A 的子类print(issubclass(B, B)) # 打印: True # 表示 B 本身可以看作子类print(issubclass(B, object)) # 打印: True # 表示 object 是所有类的基类print(issubclass(B, C)) # 打印: Flass # 表示 B 和 C 没有任何关系
isinstance(object,classinfo) 检测实例对象和属性是否一个类
检测实例对象和属性是否一个类的, 检查左边是否属于右边的
- 如果第一个参数不是对象, 则永远返回False
 - 如果第二个参数不是类或者有类对象组成的元祖, 会抛出一个TypeError异常 ```python class A : pass
 
class B(A) : pass
class C: pass
b1 = B()
print(isinstance(b1, B)) # 打印: True ## b1 s是 B的实列化对象
print(isinstance(b1, A)) # 打印: True ## B 类是继承 了A类
print(isinstance(b1, C)) # 打印: False ## b1 和C类 没有关系
print(isinstance(b1, (A, B, C))) # 打印: True 也可以使用元祖的方法
<a name="dkugh"></a>### hasattr(object,name) 检测类对象是否有指定属性测试对象 里面是否有指定属性```pythonclass C:def __init__(self,x =0):self.x = xc1 = C()print(hasattr(c1, "x"))
getattr(object,name[,default]) 返回类对象指定属性值
返回对象指定的属性值, 如果不存在 返回你设置的数据
class C:def __init__(self,x =0):self.x = xc1 = C()print(getattr(c1, 'x', '您数访问的这个属性不存在'))
setattr(object,name,value) 设置类对象属性值
设置类对象的属性 与属性值
class C:def __init__(self,x =0):self.x = xc1 = C()setattr(c1,'y', 20)print(getattr(c1, 'y', '没有这个数据'))-------------------------20
delattr(object,name) 删除类对象的属性
如果删除不存在的 a 属性 则会报错
class C:def __init__(self,x =0):self.x = xc1 = C()setattr(c1,'y', 20)delattr(c1,'y')print(getattr(c1, 'y', '没有这个数据'))-----------------------没有这个数据
property() 返回供用户操作的属性
property(fget=none,fset=none,fdel=none,doc=none)
- 获取属性
 - 设置属性
 - 删除属性
 
类是于 property 是个中转接口 
通过属性 来 设置属性
它的作用在于 
用户 只需要通过 x 来操作 获取, 设置, 删除 即可
开发在代码里改动后只需要 填到 property() 中即可
class C:def __init__(self, size=10):self.size = sizedef getSize(self):return self.sizedef setSize(self, value):self.size = valuedef delSize(self):del self.sizex = property(getSize, setSize, delSize)c1 = C()print(c1.x) # 获取属性c1.x=28 # 设置属性print(c1.x)del c1.x #删除属性print(c1.x)
