类里 可以定义两种属性
静态属性
动态属性
class Course: language = 'Chinese' def __init__(self,teacher,course_name,period,price): self.teacher = teacher self.name = course_name self.period = period self.price = price def func(self): pass Course.language = 'English' #可以依次修改静态属性 print(Course.language)
python = Course('egon','python','6 months',20000) linux = Course('oldboy','linux','6 months',20000)
print(python.language) #实例化对象也可以访问静态属性
print(linux.language)
类中的静态变量 可以被对象和类调用
对于不可变数据类型来说,类变量最好用类名操作
对于可变数据类型来说,对象名的修改是共享的,重新赋值是独立的
-------------------------------------------------------------
创建一个类,每实例化一个对象就计数
最终所有的对象共享这个数据
class Foo: count = 0 def __init__(self): Foo.count += 1 # 必须通过类名调用,才能共享数据 f1 = Foo() f2 = Foo() print(f1.count)-----------2 print(f2.count)-----------2 f3 = Foo() print(f1.count)----------3
面向对象的组合:
组合:在一个类中以另一个类的对象作为数据属性,称为类的组合
class BirthDate: def __init__(self,year,month,day): self.year=year self.month=month self.day=day class Couse: def __init__(self,name,price,period): self.name=name self.price=price self.period=period class Teacher: def __init__(self,name,gender,birth,course): self.name=name self.gender=gender self.birth=birth self.course=course def teach(self): print('teaching') p1=Teacher('egon','male', # 组合 BirthDate('1995','1','27'), Couse('python','28000','4 months') ) print(p1.birth.year,p1.birth.month,p1.birth.day) ------------- 1995 1 27 print(p1.course.name,p1.course.price,p1.course.period) ---------python 28000 4 months