class Student(): school = "xcxy" # 类属性 __major = "computer" # 类私有属性 def __init__(self ,name, age): # 构造方法 self.name = name # 实例属性 self.__age = age # 实例私有属性 def match(self, score): # 实例方法 print(self.school) # 访问类属性 self.类属性名 print(Student.school) # 访问类属性 类名.类属性名 print(self.__major) # 访问类私有属性 self.类私有属性名 print(Student.__major) # 访问类私有属性 类名.类私有属性名 print(self.name) # 访问实例属性 self.实例属性名 print(self.__age) # 访问实例私有属性 self.实例私有属性名 def __fly(self,nnn): # 私有方法 外部访问只能是 对象._类名__私有方法名 print(nnn) # 其他和实例方法相同 @classmethod def eat(cls,num): # 类方法 print(cls.school) # cls.类属性 print(Student.school) # 类名.类属性 print(cls.__major) # cls.类私有属性 print(Student.__major) # 类名.类私有属性 @staticmethod def run(numm): print(Student.school) # 类名.类属性 print(Student.__major) # 类名._ _私有类属性 stu = Student("hjh",24) # 实例化对象
以下称为外部
print(stu.school) # 对象.类属性名 xcxy print(Student.school) # 类名.类属性名 xcxy
stu.school = "qhdx" # 对象. 类属性名 = "qhdx" print(stu.school) Student.school = "bjdx" # 类名. 类属性名 = "bjdx" print(Student.school)
print(stu._Student__major) # 对象._类名__私有属性名 computer print(Student._Student__major) # 类名._类名__私有属性名 computer
stu._Student__major = "jixie" # 对象._类名__私有属性名 = "jixie" print(stu._Student__major) Student._Student__major = "dianqi" # 类名._类名__私有属性名 = "dianqi" print(Student._Student__major)
print(stu.name) # 对象.实例属性名
stu.name = "hsf" # 对象.实例属性名 = "hsf" print(stu.name)
print(stu._Student__age) # 对象.实例属性名
stu._Student__age = 20 # 对象._类名__实例属性名 = "hsf" print(stu._Student__age)
stu.match(300) # 对象.方法名(参数列表) 不能使用 类名.实例方法名 的方式调用
stu._Student__fly(500)
Student.eat(200) # 类名.类方法名([实参列表]) stu.eat(200) # 对象.类方法名([实参列表])
Student.run(800) # 类名.静态方法名([实参列表]) stu.run(800) # 对象.静态方法名([实参列表])