python note 类与实例

本文详细介绍了Python中的面向对象编程,包括类的定义、实例化、属性和方法,以及如何创建和使用类的实例。示例中展示了Human类的创建,包含了姓名、性别、年龄等属性和吃饭、睡觉等方法。此外,还探讨了对象的标识、属性的赋值以及类的继承和方法重写,通过Boy和Girl类的示例说明了如何进行二次开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象三要素:

  1. 属性:是什么?对应状态
  2. 方法:能做什么?对应行为
  3. 标识:内存地址

OOP(Object-oriented programming)——面向对象程序编程

 

 

# -*- coding: utf-8 -*-

"""

定义类

class 类名称(object|父类):

    类属性

    方法

 

例子:

人类

属性:姓名、性别、年龄、身高、体重

方法:吃饭、睡觉、跑步、说话

"""

class Human(object):

    name="张三"

    sex="男"

    age="18"

    height=170

    weight=65

    #self:示例(类本身)

    def eat(self):

        print("{}正在吃饭!".format(self.name))

 

    def sleep(self):

        print("{}正在睡觉!".format(self.name))

 

    def run(self):

        print("{}正在跑步!".format(self.name))

 

    def info(self):

        print("姓名:{},年龄:{},性别:{},身高:{},体重:{}".format(

            self.name,

            self.age,

            self.sex,

            self.height,

            self.weight

        ))

 

if __name__ == "__main__":

    zhangsan=Human() #实例化类成具体对象

    print(zhangsan.name)#通过对象调用属性

    zhangsan.eat()#通过对象调用方法

    zhangsan.sleep()

    zhangsan.run()

    zhangsan.info()

    print(zhangsan)

    print("---------------------------------------")

    lisi=Human()

    lisi.name="李四" #通过对象调用属性重新赋值

    lisi.age=22

    lisi.sex="女"

    lisi.weight=50

    lisi.height=160

    print(lisi.name)

    lisi.eat()

    lisi.sleep()

    lisi.run()

    lisi.info()

print(lisi)

 

 

# -*- coding: utf-8 -*-

 

class Human:

    # 类属性

    area = "中国"

    skin = "黄色"

 

    # 定义构造方法

    def __init__(self, name="张三", age=18, sex="男", height=170, weight=65):

        # 实例属性

        self.name = name  # 把name这个参数传递给self.name这个实例属性

        self.age = age

        self.sex = sex

        self.height = height

        self.weight = weight

 

    def eat(self):

        print("{}正在吃饭!".format(self.name))

 

    def sleep(self):

        print("{}正在睡觉!".format(self.name))

 

    def run(self):

        print("{}正在跑步!".format(self.name))

 

    def info(self):

        print("姓名:{},性别:{},年龄:{},身高:{}cm,体重:{}kg,国籍:{},肤色:{}".format(

            self.name,

            self.sex,

            self.age,

            self.height,

            self.weight,

            self.area,

            self.skin

        ))

 

 

if __name__ == "__main__":

    # 按照默认的参数实例化

    zhangsan = Human()

    print(zhangsan.name)

    zhangsan.eat()

    zhangsan.sleep()

    zhangsan.run()

    zhangsan.info()

    print("-----------------------")

    # 3.修改参数实例化

    lisi = Human(name="李四", age=22, sex="女", height=160, weight=50)

    lisi.area = "美国"

    lisi.skin = "白色"

    print(lisi.name)

    lisi.eat()

    lisi.sleep()

    lisi.run()

    lisi.info()

    print("------------------------")

    xiaomei = Human()

    # 3.先实例化,通过实例化以后的对象.属性来重新赋值

    xiaomei.name = "王五"

    xiaomei.age = 26

    xiaomei.sex = "保密"

    xiaomei.height = 165

    xiaomei.weight = 55

    xiaomei.area = "日本"

    xiaomei.skin = "黄色"

    print(xiaomei.name)

    xiaomei.eat()

    xiaomei.sleep()

    xiaomei.run()

    xiaomei.info()

 

 

# -*- coding: utf-8 -*-

#from prettyprinter import cpprint

 

"""

继承:子类继承父类方法和属性

class 父类(object):

    代码块

 

class 子类(父类):

    代码块

"""

 

 

# 定义一个人类

class Human(object):

    age = 18

    height = 180

    weight = 70

 

    def eat(self):

        print("吃饭!")

 

    def run(self):

        print("跑步!")

 

 

# 定义一个男孩类

class Boy(Human):

    age = 12

    height = 150

    weight = 40

    sex = "男"

 

    # 重写,Girl和Human有同样名称的方法,就把Human中的同一个方法遮盖住,显示的是Girl中的方法

    def eat(self):

        print("小男孩正在吃饭!")

 

    def play_game(self):

        print("打游戏!")

 

 

# 定义一个女孩类

class Girl(Human):

    age = 16

    height = 160

    weight = 50

    sex = "女"

 

    # 重写

    def run(self):

        print("小女孩正在跑步!")

 

    def dance(self):

        print("跳舞!")

 

 

# 定义一个年轻人类,多重继承,继承多个类

class Young1(Boy, Girl):

    def common(self):

        print("年轻人朝气蓬勃!")

 

    def info(self):

        print("*********************")

        # super(子类名称,实例).属性|方法:调用父类的方法或者属性

        # super调用就可以和self区分开:覆盖掉属性和方法

        # 二次开发,覆盖原来框架的内容,调用原来框架的内容,super()

        super(Girl, self).eat()  # 调用Girl的父类的eat()方法

        super(Girl, self).run()  # 调用Girl的父类的run()方法

 

        super(Young1, self).dance()

        super(Young1, self).play_game()

        print("*********************")

 

 

class Young2(Girl, Boy):

    def common(self):

        print("年轻人朝气蓬勃!")

 

 

if __name__ == "__main__":

    zhangsan = Boy()

    print(zhangsan.age, zhangsan.height, zhangsan.weight, zhangsan.sex)

    zhangsan.eat()

    zhangsan.run()

    zhangsan.play_game()

    print("----------------------")

    lisi = Girl()

    lisi.age = 16

    lisi.height = 160

    lisi.weight = 50

    print(lisi.age, lisi.height, lisi.weight, lisi.sex)

    lisi.eat()

    lisi.run()

    lisi.dance()

    print("-----------------------")

    wangwu = Young1()

    print(wangwu.age, wangwu.height, wangwu.weight, wangwu.sex)

    # 继承顺序,优先继承Boy

    print(Young1.__mro__)

    wangwu.run()

    wangwu.eat()

    wangwu.dance()

    wangwu.play_game()

    wangwu.info()

    print("-----------------------")

    wangwu = Young2()

    print(wangwu.age, wangwu.height, wangwu.weight, wangwu.sex)

    # 继承顺序,优先继承Girl

    print(Young2.__mro__)

    wangwu.run()

    wangwu.eat()

    wangwu.dance()

    wangwu.play_game()

 

   # cpprint(dir(wangwu))#查看dir可调用的信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值