类里 可以定义两种属性
静态属性
动态属性
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

 

posted on 2019-07-07 13:58  wzc27229  阅读(118)  评论(0编辑  收藏  举报