类方法,静态方法,魔术方法,私有化

1.类方法就是类中的方法,它属于类,可以通过类名来调用,也可以通过对象名来调用

2.类方法的表示是通过@classmethod装饰器来标识的,并且类方法里面自带类本身对象参数cls

3.静态方法也是类中的方法,属于类,可以通过类名调用,也可以通过对象名调用

4.静态方法的表示是通过@staticmethod装饰器标识的,不带参数,这也是它与类方法的区别

5.类方法和静态方法都不依赖对象,因为他们可以通过类名来调用,但也可以通过对象名来调用

class Dog:
  def __init__(self,nickname):
    self.nickname = nickname
  def run(self):
    print('{}在院子里面跑来跑去!'.format(self.nickname))
  @classmethod #通过@classmethod修饰器标识
  def test(cls):#带参数类本身参数,指向类cls
    print('这是类方法')
  @staticmethod#通过@staticmethod修饰器标识
  def test_1():#无参数
    print('这是静态方法')
dog = Dog('大黄')
dog.run()#结果为大黄在院子里面跑来跑去!
Dog.test() #通过类调用类方法,结果为这是类方法
Dof.test_1() #通过类调用静态方法,结果为这是类方法
dog.test() #通过对象调用类方法,结果为这是静态方法
dog.test_1() #通过对象调用静态方法,结果为这是静态方法

6.魔术方法,就是一种特殊的方法,一般通过__XXX__()这样的形式来标识

7.主要的魔术方法有五种:__init__(),__new__(),__call__,__del__(),__str__()

重点的是:__init__():初始化对象,__str__():输出与对象名相关的信息

需要了解的是:__new__():为对象名开辟内存空间,__call__,将对象当做函数使用,定义该方法并通过对象名()来调用,__del__():删除变量的引用,引用共用的是同一内存空间

class Person:
  def __init__(self,name,age):#初始化变量
    self.name = name
    self.age = age
  def __str__(self):#返回字符串,并且可以通过+连接字符串,作用是:输出与对象名相关的信息
    return '{}今年{}岁!'.format(self.name,self.age)
p = Person('张三',20)#初始化对象并赋值
p.__str__()#结果为张三今年20岁!

8.私有化:好处是外部不能随意改变类中的属性,并且可以设置属性条件

9.通过设置__属性名来标识这是一个私有属性

10.通过set方法修改私有化属性,通过get方法获得私有化属性

class Person:
  def init(self,__name,__age,__score):
    self.__name = name
    self.__age = age
    self.__score = score
  def __str__(self):
    return '{}今年{}岁,成绩是{}分!'.format(self.__name,self.__age,self.__score)
  def setAge(self,age):#通过set方法修改私有化属性的值
if age > 18:#设置属性条件
self.__age = age
else:
print('无法修改!')
def getAge(self)#通过get方法获得私有化属性的值 return self.__age p = Person('李四',21,99) p.__str__() #结果为李四今年21岁,成绩是99分! p.__score = 90 #无法修改,因为该属性已被私有化 p.setAge(25) p.getAge() #结果为25 p.__str__() #结果为李四今年25岁,成绩是99分!

 

posted @ 2021-07-29 09:52  求知律己  阅读(193)  评论(0编辑  收藏  举报