首页 > 其他分享 >3月17日课后总结

3月17日课后总结

时间:2023-03-20 19:13:58浏览次数:32  
标签:总结 __ name 17 self userid 课后 laowang def

3/17课后总结

绑定方法

"""
	一般来说,在类里定义的属性和方法都是默认绑定给对象的
	绑定给对象的方法,就需要对象来调用
"""
class Dog:
    def __init__(self, name):
        self.name = name

    def say_hi(self):  # 绑定给对象的方法
        print('wangwang')

    @classmethod  # 内置装饰器,将该方法绑定给类,用类来调用
    def animal(cls):  # 绑定给类的方法
        return cls('mimi')

dog = Dog('dahuang')
dog.say_hi()
cat = dog.animal()
cat.say_hi()

"""
	绑定给对象的方法特殊之处就是:把对象名作为第一个参数,传给方法的第一个形参就是self
	绑定给类的方法特殊之处就是:把类名作为第一个参数传给方法的第一个形参就是cls
"""

非绑定方法

class Dog:
    def __init__(self, name):
        self.name = name

    @staticmethod  # 静态方法,不绑定类也不绑定对象
    def get_id():
        import uuid  # 只要长度固定,生成随机数,理论上肯定会重复
        return uuid.uuid4()
    
    def index(self):  # 如果对象和类都用到了,推荐绑定给对象self.__class__就是该对象的类了
        pass
    
print(dog.get_id())

隐藏属性(私有属性)

# 1.定义
"""
	隐藏属性或者隐藏方法就是也可称为私有属性私有方法
	在别的语言里定义私有属性一般都是private加属性名
	python中私有属性为:__name,私有方法为def __index():
	属性或者方法,隐藏后,对内不对外,在外部无法直接调用,在类里面可以
	或者使用_类名__属性(方法名)进行强制调用
	在python中没有绝对的私有或者隐藏的
"""
class people:
    __userid = 123456

    def __init__(self,name, age):
        self.name = name
        self.age = age

laowang = people('laowang',21)
print(laowang.userid)  # 直接报错,找不到userid
print(laowang.__userid)  # 直接报错,找不到__userid
print(laowang._people__userid)  # 强制调用私有属性userid
# 一般情况下我们不会强制调用私有属性,如果想要查看或者修改私有属性或者方法一般都是在内部写一个接口,用来返回私有属性的值

    def get_userid(self):  # 用于查看userid
        return self.__userid

    def set_userid(self,value):  # 用于修改userid
        self.__userid = value
        return f'修改后的ID为{self.__userid}'

print(laowang.get_userid())
print(laowang.set_userid(111111))

property装饰器

"""
	主要用处是把方法伪装成属性使用,如同上面的get_userid和set_userid
	伪装后就可以直接用laowang.useid使用
"""
class people:
    __userid = 123456

    def __init__(self,name, age):
        self.name = name
        self.age = age
        
    @property  # 查看
	def useid(self): 
        return self.__userid
    
	@userid.setter  # 修改
    def useid(self,value):  
        self.__userid = value
        return f'修改后的ID为{self.__userid}'
    
    @userid.deleter  # 删除
    def userid(self):
        del self.__userid

laowang = people('laowang',123)
print(laowang.userid)
laowang.userid = 9999
del laowang.userid

# 关于property还有一种使用方法
class people:
    __userid = 123456

    def __init__(self, name, age):
        self.name = name
        self.age = age


    def get_userid(self):
        return self.__userid


    def set_userid(self, value):
        self.__userid = value


    def del_userid(self):
        del self.__userid

    userid = property(get_userid,set_userid,del_userid)

laowang = people('laowang',123)
print(laowang.userid)
laowang.userid = 9999
del laowang.userid


class Me:
    def __init__(self,weight, height):
        self.weight = weight
        self.height = height

    @property
    def bmi(self):
        return self.weight / self.height ** 2

me = Me(65,1.8)
print(me.bmi)

面向对象的三大特征

# 继承
# 封装
# 多态
继承
"""
	一种新建类的方式,class Dog(animal):这种就可以说Dog是animal的子类或者派生类,animal是Dog的父类或者基类
	子类可以继承父类所有的属性和方法,父类可以通过特殊手段调用子类的属性或方法
	类是解决对象之间代码的冗余
	继承是解决类之间代码的冗余
	经典类:没有继承object类的子子孙孙类都是经典类
	新式类:继承了object类的子子孙孙类都是新式类
	只有再python2中才区分经典类和新式类,在python3中,全部都是新式类
"""
class Animal:  
    def __init__(self,name,age):
        self.name = name
        self.age = age


class Dog(Animal):  # 继承了Animal类
    def __init__(self,name,age):
        Animal.__init__(self,name,age)  

dog = Dog('dahuang',2)
print(dog.__dict__)  # 输出结果:{'name': 'dahuang', 'age': 2}

标签:总结,__,name,17,self,userid,课后,laowang,def
From: https://www.cnblogs.com/juzixiong/p/17237361.html

相关文章

  • Convex Analysis and Monotone Operator Theory in Hilbert Spaces 3.1-3.2 总结材料
    拓扑空间基本概念  集合是数学中最基本的概念之一,我们最常见的集合便是\(\mathbb{R}\)。\(\mathbb{R}\)中的元素有大小关系,即\(\mathbb{R}\)上有序结构;\(\mathbb{R......
  • 3月20日课后总结
    3/20课后总结单继承下的属性查找classB:defb1(self):print('B1')defb2(self):print('B2')self.b1()#self是c,这句话是c.b1......
  • linux 后台执行的总结
    命令+&以前写过使用方法https://www.cnblogs.com/toumingbai/p/15644274.html此方法直接关掉终端窗口会停止运行解决方法是先ctrl+d退出缺点是再次登入的时候无法切......
  • MySQL自增ID的知识点总结
    MySQL自增ID的知识点总结1.使用自增ID的优缺点优点主键页以近乎顺序的方式填写,提升了页的利用率索引更加紧凑,性能更好查询时数据访问更快节省空间连续增长的值......
  • loj6144「2017 山东三轮集训 Day6」C
    loj6144「2017山东三轮集训Day6」C注意到修改只有位运算,容易想到将位拆开考虑。首先可以发现对某一位或上\(0\)或者是对某一位与上\(1\)是没有意义的,相当于没有操作......
  • 17
    建立一套以数据采集为基础,数据分析、统计、管控为核心的综合性能源管理系统,详细需求描述如下:1、数据收集功能:生产区域以车间为主体,通过计量仪表远程收集蒸汽、冷凝水、电、......
  • vue3 简单入门总结
    (vite+vue3)基础1.基础语法和传值问题//传值definePropsdefineEmits//父组件<template><div><Child:msg="userInfo.info"@change="change"/></Child><......
  • Java线程知识点总结
    文章目录​​Java线程基础​​​​线程简介​​​​什么是进程​​​​什么是线程​​​​进程和线程的区别​​​​创建线程​​​​Thread​​​​Runnable​​​​Calla......
  • Windows10 安装OpenVINO(2021.4.2)非默认路径踩坑总结
    @TOC前言这几天因公司业务需要,下载了OpenVINO,真的是一把辛酸泪啊,晚上十一点,安装调试到凌晨四点,运行demo_squeezenet_download_convert_run.bat依旧报错一大堆,真的要炸了,后来......
  • 2023/03/17(五)阴,有雨;第一次没收手机
    因为知道今天是六年级的卒业式,估计他俩中午前会放学回家,家里提前准备好做好的炒茄子和米饭;头天晚上给孩子们布置任务:放学回家下午记得互相检查五十音图的学习结果。上班......