类 , 类对象 , 实例对象
class C: # 类定义
coum = 0 # 类对象
a = C() # 实例化
b = C() # 实例化
c = C() # 实例化
dd = C() # 实例化
a.coum # 实列化对象 0
b.coum # 实列化对象 0
c.coum # 实列化对象 0
dd.coum # 实列化对象 0
dd.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 = x
self.y = y
def printXY(self):
print(self.x,self.y)
dd =CC()
dd.setXY(12,15)
print(dd.__dict__)
print(CC.__dict__)
del CC
ee =CC() # 打印报错信息, 因为CC类被删除了
dd.printXY() # 能正常打印 12,15
相关的BlF 内置函数
issubclass(class, classinfo) class是classinfo 的子类吗
判断 class 是 classinfo 的子类 的话返回 True
- 一个类被认为是其自身的子类
- classinfo 可以是类对象元祖, 只要class 与其中任何一个候选的子类, 则返回True
没个候选的类 是否是他得到子类
class A :
pass
class B(A) :
pass
class C:
pass
print(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) 检测类对象是否有指定属性
测试对象 里面是否有指定属性
```python
class C:
def __init__(self,x =0):
self.x = x
c1 = C()
print(hasattr(c1, "x"))
getattr(object,name[,default]) 返回类对象指定属性值
返回对象指定的属性值, 如果不存在 返回你设置的数据
class C:
def __init__(self,x =0):
self.x = x
c1 = C()
print(getattr(c1, 'x', '您数访问的这个属性不存在'))
setattr(object,name,value) 设置类对象属性值
设置类对象的属性 与属性值
class C:
def __init__(self,x =0):
self.x = x
c1 = C()
setattr(c1,'y', 20)
print(getattr(c1, 'y', '没有这个数据'))
-------------------------
20
delattr(object,name) 删除类对象的属性
如果删除不存在的 a 属性 则会报错
class C:
def __init__(self,x =0):
self.x = x
c1 = 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 = size
def getSize(self):
return self.size
def setSize(self, value):
self.size = value
def delSize(self):
del self.size
x = property(getSize, setSize, delSize)
c1 = C()
print(c1.x) # 获取属性
c1.x=28 # 设置属性
print(c1.x)
del c1.x #删除属性
print(c1.x)