python学习35:类属性和类方法,静态方法,私有属性和私有方法


1. 类属性和类方法

类属性:针对类对象定义的属性,使用赋值语句在class关键字下可以定义类属性。
类方法:针对类对象定义的方法,在类方法内部可以直接访问类属性或者调用其他的类方法。

class Toy(object):
    # 使用赋值语句 记录所有的玩具数量
    count = 0
    def __init__(self,name):
        self.name = name
        # 让类属性+1
        Toy.count += 1
    @classmethod
    def show_toy_count(cls):
        print('玩具对象的数量 %d' %(cls.count))

# 创建玩具对象
toy1 = Toy('乐高')
toy2 = Toy('泰迪熊')

#调用类方法
Toy.show_toy_count()

在这里插入图片描述

2. 静态方法

静态方法:通过类名调用静态方法,不需要创建对象,直接就可以调用。

class Cat(object):
    @staticmethod
    def call():
        print('喵喵~')

Cat.call()

在这里插入图片描述

3. 私有属性和私有方法

class Student(object):
    def __init__(self,name,score):
        # 前面带两个下划线表示对变量进行私有化
        # 外部不能随便的访问和更改
        self.__name = name
        self.__score = score

    def get_grand(self):
        print('my name is %s,my grade is %d' %(self.__name,self.__score))

    def get_name(self):
        return self.__name

    def get_score(self):
        return self.__score

    def set_name(self,name):
        if isinstance(name,str):
            self.__name = name
        else:
            raise ValueError('请输入正确的名字')

    def set_score(self,score):
        if isinstance(score,int):
            self.__score = score

        else:
            raise ValueError('请输入正确的成绩')

tom = Student('Tom',89)
print(tom.get_name())
print(tom.get_score())
tom.__name = 'new_name' # 这样做只是给对象添加了__name的属性 而不是修改私有属性的值
tom.set_name('tommm')
tom.set_score(99)
print(tom.get_name())
print(tom.get_score())

在这里插入图片描述

发布了106 篇原创文章 · 获赞 1 · 访问量 2370

猜你喜欢

转载自blog.csdn.net/weixin_43384009/article/details/104108351
今日推荐