• python3-对象&类


    对象

    编程中万物皆对象,一个球、一个文具盒、一个人等等都可以称作为对象。可以理解为对象就是类的一个实例

    类=属性+方法

    属性是信息、方法是动作

    定义类:使用class来定义类

    #定义一个class类,可以使用函数指定属性和方法,然后对象实例化,通过对象来调用类中的方法
    class Students:
    #定义方法
    def run(self):
    print('I am running')
    #定义属性(初始化属性)
    def __init__(self,name,age):
    self.name = name
    self.age = age
    stu1 = Students('ghd',30)
    #执行动作
    stu1.run()
    #查看属性
    print(stu1.name)
    init函数:构造函数,每次实例化对象都会执行init函数,举例说明
    class Students:
        #定义方法
        def run(self):
            print('I am running')
        #定义属性(初始化属性)
        def __init__(self,name,age):
            self.name = name
            self.age = age
            print('我执行了')
    stu1 = Students('ghd',30)
    stu2 = Students('gym',30)
    #执行动作
    stu1.run()
    #查看属性
    print(stu1.name)
    #类可以指定一个大的范围,而对象是将类具体化

    ###########输出结果#######################

    我执行了
    我执行了
    I am running
    ghd

    看到俩次“我执行了”,说明在每次生成对象的时候都会执行init函数中的内容

     类变量和实例变量

    class Students:    #创建类
        gender = "male"        #创建类变量
        height = 12
        def __init__(self,name,age):   #初始化属性
            self.name = name
            self.age = age
        def learn(self):                #添加方法
            print("好好学习")
            print(self.name)
            print(self.gender)
        def run(self):
            print(self.gender,self.height,self.name)
    stu1 = Students('tom',12)   #创建对象
    print(stu1.gender)  #打印类变量
    stu1.gender = "ghd"  #修改类变量
    print(stu1.gender)
    #修改对象的值
    stu1.name = "cat"
    print(stu1.name)

    执行结果:

    /Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
    male
    ghd
    cat    #说明对象的name形参的值已修改
    类的多态:类不一样,但是方法是一样的
    #类的多态
    #类可以指定一个大的范围,而对象是将类具体化
    class Computer:
        def __init__(self,brand,price,color,size):
            self.brand = brand
            self.price = price
            self.color = color
            self.size = size
        def play(self):
            print('我可以玩游戏')
        def job(self):
            print('我可以办公')
    #直接输入对象结果会输出一个内存地址,如果想看到对象中值,就需要使用__str__函数
        def __str__(self):
            return self.brand+str(self.price)+self.color+str(self.size)
    class Phones:
        def job(self):
            print('苹果手机也可以办公')
    c = Computer('thinkpad',6000,'red',16)
    c.job()
    p = Phones()
    p.job()

    输出结果:

    /Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
    我可以办公
    苹果手机也可以办公
    
    进程已结束,退出代码0

     

    类的继承

    class Cat:
        def __init__(self,name,enjoy,weight):
            self.name = name
            self.enjoy = enjoy
            self.weight = weight
        def run(self):
            print('蹦蹦跳跳')
        def job(self):
            print("吃喝睡")
    class Bosi_cat(Cat):   #将Cat作为父类
        def setNewName(self,newname):
            self.newname = newname
        def run(self):
            print('跑跳')
    b = Bosi_cat('cat','',1)  #需要指定父类中的参数
    b.job()   #子类继承父类的所有方法
    b.run()   #如果子类和父类的方法一致,优先执行子类的方法(子类方法优先级高)

    输出结果:

    /Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
    吃喝睡
    跑跳
    
    进程已结束,退出代码0
  • 相关阅读:
    mysql 双机互备份
    ubuntu12.04 qtcreate支持中文输入
    新版IDEA 2020.1遇到的坑Error:(3,32)java:程序包org.springframework.boot不存在Error:
    No partition predicate found for Alias "TS" Table ""
    SQL语句中sum与count的区别
    :line 1:100 cannot recognize input near '<EOF>' '<EOF>' '<EOF>' in statement
    mysql计算某个字段最长值
    mysql字段varchar长度分配对性能的影响
    【MySQL】NOT NULL default 0
    FAILED: NoMatchingMethodException No matching method for class org.apache.hadoop.hive.ql.udf.UDFToString with (struct<hashtags:array<string>
  • 原文地址:https://www.cnblogs.com/python-cat/p/12263542.html
Copyright © 2020-2023  润新知