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

2022年8月4日13:13:17
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)                    # 对象.静态方法名([实参列表])
  • 作者:unicode6674
  • 原文链接:https://blog.csdn.net/weixin_43984760/article/details/88358006
    更新时间:2022年8月4日13:13:17 ,共 1575 字。