python面向对象之命名空间及组合

命名空间

class Course:
    language = 'Chinese'
    def __init__(self,teacher,name,period,price):
        self.teacher = teacher
        self.name = name
        self.period = period
        self.price = price

print(Course.language)
python = Course('wangys','python','6 months',20000)
print(python.language)

静态属性

  • 类的属性和方法可以被类调用,也可以被对象调用
  • 类的静态属性当使用类进行修改时,使用字典的方式修改时不允许的,但可以通过 类名.属性=。。。 进行修改
  • 通过

类的静态属性可以被类调用,也可以被对象调用

class Course:  
    language = 'Chinese'
    def __init__(self,teacher,name,period,price):
        self.teacher = teacher
        self.name = name
        self.period = period
        self.price = price

print(Course.language) # 类调用
python = Course('wangys','python','6 months',20000)
print(python.language) # 对象调用

# 不论是类调用还是对象调用,都是可以的

类的静态属性当通过类进行修改的时候,只能通过 类命.属性的方式进行修改

class Course:    # 定义了一个课程类
    language = 'chinese'   # 有一个语言静态属性
    def __init__(self,teacher,name,period,price):  # ————init__方法有老师,课程名称,周期,价格等
        self.teacher = teacher
        self.name = name
        self.period = period
        self.price = price

Course.language = 'EN'  # 通过类名.属性方式修改
print(Course.language)
# EN Course.
__dict__['language'] = 'chinese' # 通过字典的方式修改不允许 print(Course.language)
# TypeError: 'mappingproxy' object does not support item assignment

猜你喜欢

转载自www.cnblogs.com/wc89/p/10356933.html