首页 > 编程语言 >python的私有方法

python的私有方法

时间:2022-09-28 11:25:46浏览次数:82  
标签:__ name python self 私有 user 方法 age def

   __init__和__new__

#!/user/bin/env python
# -*- coding:utf-8 -*-
# __new__ 在 __init__ 之前执行
# __new__ 是用来控制对象的生成过程, 在对象生成之前
# __init__ 是用来完善对象的
# 如果__new__方法不返回对象, 则不会调用__init__方法


class User:
    def __new__(cls, *args, **kwargs):
        print('in new')
        return super().__new__(cls)

    def __init__(self, name):
        print('in init')
        self.name = name


if __name__ == '__main__':
    user = User('zy')
    print(user.name)

  __getattr__和__getattribute__
#!/user/bin/env python
# -*- coding:utf-8 -*-
# __getattr__、__getattribute__
# __getattr__ 就是在查找不到属性的时候调用
# __getattribute__ 无条件进入__getattribute__
from datetime import date


class User:
    def __init__(self, name, birthday, info={}):
        self.name = name
        self.birthday = birthday
        self.info = info

    def __getattr__(self, item):
        return self.info[item]

    # def __getattribute__(self, item):
    #     return '__getattribute__'


if __name__ == '__main__':
    user = User('zy', date(year=1998, month=6, day=8), {'company': 'imooc'})
    print(user.company)
    print(user.name)

  

property
from datetime import date, datetime


class User:
    def __init__(self, name, birthday):
        self.name = name
        self.birthday = birthday
        self._age = 0

    def get_age(self):
        return datetime.now().year - self.birthday.year

    @property
    def age(self):
        return datetime.now().year - self.birthday.year

    @age.setter
    def age(self, value):
        self._age = value
if __name__ == '__main__':
    user = User('zy', date(year=1998, month=6, day=8))
    user.age = 30      # 调用方法age,@age.setter
    print(user._age)     #获取变量值
    print(user.age)      #调用方法age,@property
    print(user.get_age())  #调用方法get_age

 

标签:__,name,python,self,私有,user,方法,age,def
From: https://www.cnblogs.com/topass123/p/16737310.html

相关文章

  • 计算机网络自顶向下方法第二章——应用层
    应用层协议管理研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。看清楚:不同的端系统,说明一个问题,应用程序不需要去管理怎么传送数据......
  • python的bisect
    bisect是python内置模块,用于有序序列的插入和查找。查找:bisect(array,item)插入:insort(array,item)importbisecta=[1,4,6,8,12,15,20]position=bisect.......
  • 多个python环境,选用指定环境下的 pyinstaller 进行打包文件
    背景:电脑上同时安装了python2.7和python3.8,现在想用python3.8环境下的pyinstaller来进行打包生成exe文件。常规操作方法:通过cmd进入需要打包文件的目录,执行命令pyinsta......
  • 模板方法设计模式基础知识!
    模板方法设计模式该设计模式解决的问题是:具有固定算法(步骤)的应用。但这些算法步骤,又针对不同的用户(情况)具有不同的实现方式。在该设计模式中,具有两大类方法:模板方法,步......
  • python接口测试3-使用递归函数
    递归函数,自己调用自己,达到某一条件时停止调用。我理解的是类似于两个正面对着的镜子,镜子中的画面不停重复,直到某一个时刻停止。1、使用场景:需要提取某个接口的返回数据,返......
  • ENVI5.6.2中北京三号N数据处理方法
    北京三号N卫星即北京三号国际合作星,由四颗0.3米分辨率卫星组成,首批两颗卫星分别于2021年4月29日和8月17日成功发射,除了常见的蓝、绿、红、近红外波段,还提供了深蓝(400-450n......
  • node 服务端口占用解决方法
    如果你的前端项目平时启动都好好的,突然有一天启动时报错,提示端口被占用了,可以使用如下方法试试这里不是要说去找哪个端口占用,然后停掉这个进程,因为亲身经历,有时候找不到占......
  • SpringBoot 常用读取配置文件的 3 种方法!
    我们在SpringBoot框架进行项目开发中该如何优雅的读取配置呢?或者说对于一些List或者Map应该如何配置呢?本篇主要解决如下几个问题:1、SpringBoot有哪些常用的读取配置文件......
  • js各种方法
    判断类型、判断数据是否有值typeofletobj={}typeofobj===Object//根据typeof判断对象也不太准确表达式返回值typeofundefined......
  • 二叉树的前中后序遍历的两种方法
    前中后序遍历的记忆方式:前中后可以记为中间节点的顺序位置,如:前序遍历:中左右;中序遍历:左中右;后续遍历:左右中。//前序遍历:算法实现:前序遍历顺序为中左右。需要传......