类成员和命名空间
class A:
Country = '中国' #静态变量/静态属性 储存在类的命名空间里
def __init__ (self,name,age): #绑定方法 储存在类的命名空间里面
self.name = name
sele.age = age
def func1(self):
print(self)
def func2(self):pass
def func3(self):pass
a = A('alex',83)
print(a.name)
print(a.Country)
类中的变量是静态变量
对象中的变量只属于对象本身,每个对象有属于自己的空间来储存对象的变量
当使用对象名去调用某一个属性的时候会优先在自己的空间去寻找,找不到再去对应的类中寻找
如果自己没有就引用类的,如果类也没有就报错
对于类来说,类中的变量所有的对象都是可以读取的,并且读取的是同一份变量
类中的静态变量的用处
如果一个变量是所有的对象共享的值,那么这个变量应该被定义成静态变量
所有和静态变量相关的增删改查都应该使用类名来处理
而不应该使用对象直接修改静态变量
组合
- 一个类的对象是另一个类对象的属性
#练习
#对象变成了一个属性
班级类包含一个属性 - 课程
课程包含课程名称 周期 价格
创建两个班级 linux57 python22期
查看Linux57期的班级所学课程的价格
查看python22期的班级所学课程的周期
class Clas:
def __init__(self,cname,begint,teacher):
self.cname = cname
self.begint = begint
self.teacher = teacher
class Course:
def __init__(self,name,period,price):
self.name = name
self.period = period
self.price = price
py22 = Clas('python全栈22期','2019-4-26','小白')
linux57 = clas('linux运维57期','2019-4-26','李导')
prthon = Course('python','6 months',21800)
linux = course('linux','6 months',19800)
py22.course = python
linux57.course = linux
print(py22.course.period)
print(linux57.course.price)
当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好