python类内部成员的访问及外部访问

首页 / 新闻资讯 / 正文

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)                    # 对象.静态方法名([实参列表])