类方法

是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用。

使用格式:

对类的属性进行操作,就要用类的方法。

@classmethod
       def 方法名(cls)

调用类方法

类名.方法名()

代码:

class Student:
    money = 10   #  类的属性  内存中只有一份,无论你创建多少个对象,把数据共享给对象
    # 修改类的属性,类的方法
    @classmethod
    def change(cls):
        cls.money -= 2   # 修改类的属性  cls   类属性
        print(cls.money)

one = Student()
# 类名.方法名()    推荐
Student.change()
two = Student()
# 对象.方法名()
two.change()

测试结果:

8
6

静态方法

是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系。没有传递一个对象self,也没有传递类对象cls
节省内存资源 不用传递参数。

使用格式:

@staticmethod
	  def  方法名()

代码:

class Welcome:
    @staticmethod     # 静态方法,不用传递参数
    def show():
        print("*" * 10)
        print("欢迎使用该后台系统")

# 静态方法的调用
# 类名.方法名()
Welcome.show()

类实例方法

是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;

代码:

class Car:
    def __init__(self, name, loss):  # loss [价格,油耗,公里数]
        self.name = name
        self.loss = loss
        
    def getName(self):
        return self.name
    
    def getPrice(self):
        # 获取汽车价格
        return self.loss[0]

    def getLoss(self):
        # 获取汽车损耗值
        return self.loss[1] * self.loss[2]
    
Bmw = Car("宝马", [60, 9, 500])  # 实例化一个宝马车对象
print(getattr(Bmw, "name"))  # 使用getattr()传入对象名字,属性值。
print(dir(Bmw))  # 获Bmw所有的属性和方法

运行结果:

宝马
[‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’,
eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’,
hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’,
module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’,
repr’, ‘setattr’, ‘sizeof’, ‘str’,
subclasshook’, ‘weakref’, ‘getLoss’, ‘getName’, ‘getPrice’,
‘loss’, ‘name’]

私有属性

如果在属性名前面加了2个下划线’__’,则表明该属性是私有属性,否则为公有属性

class Dog:
    def __init__(self):
        self.__age = 10
one = Dog()
print(one.__age)

私有方法

在方法名前面加了2个下划线’’,是
私有方法。

class Work:
    def __show(self):
        print("大家好我的工作台低了")

one = Work()
one.__show()

私有的属性和私有的方法,在类里面使用

class Work:
    def __init__(self):
        self.__age = 10    # __属性   在类的外部不能访问
    def __show(self):   # 私有的方法在类的外部不能访问
        print(self.__age)  # 私有的属性,在类的外部不能访问,在类的内部可以访问
    def look(self):
       self.__show()   # 在类里面可以

one = Work()
# print(one.__age)   #提示错误
# one.__show()      #提示错误
one.look()

运行结果:

10