先定义两个单独没有关系的类:
class Turtle:
def __init__(self, x):
self.num = x
class Fish:
def __init__(self, x):
self.num = x
再定义一个组合类:
class Pool:
def __init__(self,x,y):
self.Turtle=Turtle(x) #实例化一个乌龟对象,并且存入变量x
self.Fish=Fish(y) #实例化一个鱼的对象,并且存入变量y
def printNum(self):
print('水池里共有乌龟 %d 只,小鱼 %d 条'%(self.Turtle.num,self.Fish.num))
调用:
pool=Pool(1,10)
pool.printNum()
class A:
count = 0; #count是一个类属性
a = A()
b = A()
c = A()
接下来我们继续我们的实验:
print(a.count)
print(b.count)
print(c.count)
c.count+=10
print(a.count)
print(b.count)
print(c.count)
A.count+=100
print(a.count)
print(b.count)
print(c.count)
下面就用类属性和实例属性做一个对比:
class test:
count = 5 # 类属性
def __init__(self):
self.x=5 #实例属性
def printSelfX(self):
print(self.x)
Test=test()
Test.printSelfX()
print(Test.count)
可能忒拗口了咳咳咳,仔细看就理解了
我们改变父类的 两个属性的值:
test.count=10
test.x=20
print(test.x)
print(test.count)
可以看到我们的父类对象的两个值已经被改变了,那么我们实例对象的两个值又会怎样呢?
print('实例对象x:',Test.x)
print('类对象count:',Test.count)
可以看到,结论是:
再做一个实验:
当删除父类以后会怎样呢?
del test
print('实例对象x:',Test.x)
print('类对象count:',Test.count)
# Test2 = test()
错误示范:
class Db:
def printDb(): #没有self对象!!!
print('no zuo no die')
db = Db()
db.printDb() #实例化后,没有self参数没法工作!!!
正确示范:
class Db:
def printDb(self): #有self
print('im ok')
db = Db()
db.printDb() #实例化后,必须要self参数才可工作