类成名和命名空间
类成员和命名空间
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)
当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号