首页 > 其他分享 >类和对象

类和对象

时间:2024-07-26 15:41:11浏览次数:4  
标签:tel name 对象 self print age def

类和对象

一.封装

(1)成员变量

成员方法

class student:
    #成员变量
    name=None
    age=None
    tel=None
    #成员方法
    def say_hi(self,msg):#self默认一定会有!
        print(f"{self.name},{msg}")
stu1=student()
stu1.age=18
stu1.name="wmy"
stu1.tel="136"
print(stu1.name)
print(stu1.age)
print(stu1.tel)
stu1.say_hi("I love you!")

(2)构造方法_ _init_ _函数

class student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
for i in range(0,2):
    a=input("输入姓名")
    b=input("输入年龄")
    c=input("输入电话")
    s=student(a,b,c)#_ _init_ _函数为构造方法定义以后可以在创建对象时赋初值,也就是执行__init__函数

    print(s.name,s.tel,s.age)

(3)魔术方法

字符串方法:将类信息转为字符串

class student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
    def __str__(self):
        return f"name={self.name},age={self.age},tel={self.tel}"
for i in range(0,2):#两个人0~1
    a=input("输入姓名")
    b=input("输入年龄")
    c=input("输入电话")
    s=student(a,b,c)
    print(s)

lt方法:实现<的比较

class student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
    def __lt__(self, other):
        return self.age<other.age
s1=student("yy",38,123)
s2=student("tt",20,901)
print(s1<s2)#输出False

 le方法:实现<=的比较

class student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
    def __le__(self, other):#比年龄
        return self.age<=other.age
s1=student("yy",20,123)
s2=student("tt",20,901)
print(s1<=s2)#输出True

eq方法:实现==的比较

class student:
    name=None
    age=None
    tel=None
    def __init__(self,name,age,tel):
        self.name=name
        self.age=age
        self.tel=tel
    def __eq__(self, other):
        return self.age==other.age
s1=student("yy",20,123)
s2=student("tt",20,901)
print(s1==s2)#输出True

 

class phone:
    __is_5g_enable=True
    def __check_5g(self):
        if self.__is_5g_enable==True:
            print("5g开启")
        else:
            print("5g关闭,使用4g网络")
    def call_by_5g(self):
        self.__check_5g()
        print("正在通话中")
s=phone()
s.call_by_5g()

二.继承

(1)单继承

class iphone:
    producer="pingguo"#成员变量设置用等号
    def call(self):
        print("正在通话中")
class iphone15(iphone):
    name="iPhone15手机"
    price=10000
    color=None
i=iphone15()
print(i.producer)
i.color="pink"
i.call()
print(i.color)

继承的做法是子类的()里写父类

(2)多继承

class phone:
    pro="小米"
    net="5g"
    def call(self):
        print("能打通")
class nfc:
    def fun(self):
        print("nfc功能使用")
class web:
    net="4g"
    def inter(self):
        print("5g上网")
class xiaomi(phone,nfc,web):
    pass#只要从父类继承来的,自己不用再定义
r=xiaomi()
r.call()
r.fun()
r.inter()
print(r.net)#如果多个父类有同名变量,优先级从左到右递减

 

(1)父类重写:(更新从父类继承过来的方法/变量)

class iphone:
    producer="pingguo"
    def call(self):
        print("正在通话中")
class iphone15(iphone):
    producer = "huawei"#重写父类成员变量
    name="iPhone15手机"
    price=10000
    color=None
    def call(self):#重写父类方法
        print("hi")
i=iphone15()
print(i.producer)
i.color="pink"
i.call()
print(i.color)

(2)在子类里调用父类变量和父类方法

方式一:

父类名.父类变量名

父类名.父类方法名(self,如果还有参数就传入)

方式二:

super().变量名

super().方法名(如果有参数就传入)#可以省略self

class iphone:
    p=6
    date=1
    producer="pingguo"
    def call(self):
        print("正在通话中")
    def tel(self,msg):
        print("电话",msg)
class iphone15(iphone):
    producer = "huawei"
    name="iPhone15手机"
    price=10000
    color=None
    def call(self):
        print("hi")
    def com(self):
        print(f"producer在父类中是{iphone.producer}")
        print(f"p是{super().p}")
        iphone.call(self)
        super().tel("215")
i=iphone15()
i.com()

三.多态

(1)子类重写父类方法并更改

class Animal:
    def speak(self):
        pass
class dog(Animal):
    def speak(self):
        print("汪汪汪")
class cat(Animal):
    def speak(self):
        print("喵喵喵")
def say(animal:Animal):#利用多态传入,子对象名.父类名
    animal.speak()#子对象名.重写方法名()
    
Dog=dog()#创建子对象
say(Dog)#传入子对象
Cat=cat()
say(Cat)

(2)抽象类

class AC:#抽象类
    def cool(self):
        pass
    def warm(self):
        pass
    def hot(self):
        pass
class media(AC):
    def cool(self):
        print("美的在降温")
    def warm(self):
        print("美的在温暖")
    def hot(self):
        print("美的加热")
class gree(AC):
    def cool(self):
        print("格力在降温")
    def warm(self):
        print("格力在温暖")
    def hot(self):
        print("格力在加热")
def cool_con(ac:AC):
    ac.cool()
M=media()
cool_con(M)
def warm_con(ac:AC):
    ac.warm()
warm_con(M)
a=gree()
warm_con(a)

 

标签:tel,name,对象,self,print,age,def
From: https://www.cnblogs.com/luckyhappyyaoyao/p/18324192

相关文章

  • 模块3 面向对象编程高级 --- 第八章:实现继承
    第八章实现继承主要知识点1、继承的概念2、继承的实现3、用this和super关键字实现继承4、抽象类的实现学习目标掌握继承和抽象类的定义和实现方法。借助集成,可以扩展原有的代码,应用到其他程序中,而不必要重新编写这些代码。扩展声明的新类称为子类,原有......
  • pygame中对象列表的颜色渐变
    我正在尝试在pygame中重新创建游戏蛇作为介绍,但是我正在努力解决如何在蛇移动时为蛇的每个方块创建渐变。我的其余代码都是有效的。我编写了以下代码:importcolorsysclassSnake:def__init__(self):self.body=[Vector2(5,no_cell/2),Vector2(4,no_cell/2),......
  • 一文详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储
    在高性能计算场景中,往往采用全闪存架构和内核态并行文件系统,以满足性能要求。随着数据规模的增加和分布式系统集群规模的增加,全闪存的高成本和内核客户端的运维复杂性成为主要挑战。JuiceFS,是一款全用户态的云原生分布式文件系统,通过分布式缓存大幅提升I/O吞吐量,并使用成本较......
  • 华为云对象存储OBS obsutil复制对象定时备份
    Linux系统使用一、下载obsutil安装包安装我这里是x86架构的,ARM架构:wgethttps://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_arm64.tar.gz执行wget命令下载obsutil工具wgethttps://obs-community.obs.cn-north-1.myhuaweicloud.com/ob......
  • “‘NoneType’类型的对象没有 len()”错误
    下面的代码应该从连接到RaspberryPiPicoWH的电容式传感器连接遥测土壤湿度数据并将其发送到ThingsBoard云,但当我运行它时,它显示“‘NoneType’类型的对象没有len()”ThonnyIDE的shell中出现错误。main.pyfrommachineimportADC,Pinimportumqtt.robustas......
  • AttributeError:“列表”对象没有属性“形状”错误
    我目前正在尝试遵循教程,因为我刚刚开始学习机器学习。我正在尝试预测股票价格。这是我的代码:`importpandasaspdimportmatplotlib.pyplotaspltimportyfinanceaswebimportnumpyasnpfromsklearn.preprocessingimportMinMaxScalerfromtensorflow.python......
  • Python 中的面向对象编程
    一.介绍在本文中,我们将使用Python中的类和对象来探索基本的OOP概念。面向对象编程(OOP)是一种强大的方法,可帮助开发人员组织代码,使其易于理解、重用和维护。Python是一种灵活的语言,可以很好地支持OOP概念。1.类和对象类是创建对象的蓝图。它定义了该类的对象将......
  • 华为云对象存储OBS s3fs挂载使用
    一、服务器下载相关依赖包yuminstallfusesudoyuminstallautomakefusefuse-develgcc-c++gitlibcurl-devellibxml2-develmakeopenssl-devel需要保证云服务器上fuse版本>=2.8.4,部分过老操作系统可能不满足这个约束,需要自行适配。二、下载s3fs支持通过以下两种......
  • C++自学笔记18(成员初始化列表和初始化对象)
    成员列表初始化创建变量,并将其初始化是创建函数的必要部分。#include<iostream>#include<string>classEntity{private:std::stringm_name;public:Entity(){m_name="nothing"}Entity(conststd::string&name){......
  • C++ primer plus 第16章string 类和标准模板库, 函数对象
    C++primerplus第16章string类和标准模板库,函数对象C++primerplus第16章string类和标准模板库,函数对象文章目录C++primerplus第16章string类和标准模板库,函数对象16.5函数对象16.5函数对象很多STL算法都使用函数对象–也叫函数符(fiunctor)。......