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

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 @   求知律己  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示