一周入门Python之day06

本文详细介绍了Python中面向对象编程的基本概念,包括类的定义、对象的创建、类与对象的属性及方法,并通过具体案例展示了如何利用类和对象解决实际问题。此外,还讲解了静态方法、类方法及继承等高级特性。


活动地址:优快云21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…


欢迎参与优快云学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:

**

学习计划

1,学习目标

提示:可以添加学习目标
例如: 一周掌握 Python 入门知识

2,学习内容

提示:可以添加要学的内容
例如:
A,掌握 Python 基本语法
B,掌握 Python 列表、字典、元组等集合类型的用法
C,掌握 Python 函数
D,掌握 Python 常用模块
E, 掌握 Python 模块与包
F,掌握 Python 类与对象

3,学习时间

每天拿出来两个小时

4,学习产出

优快云技术博客 每天一篇

学习日记

day06 Python的基础语法——面向对象

类和对象

对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。

类的构成

类(Class) 由3个部分构成
01). 类的名称:类名
02). 类的属性:一组数据
03). 类的方法:允许对进行操作的方法 (行为)

定义类

定义一个类,格式如下:
class 类名:
方法列表
demo:定义一个Hero类
class Hero: # 经典类(旧式类)定义形式

class Hero(object): # 新式类定义形式
def info(self):
print(“英雄各有见,何必问出处。”)
说明:
定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,注释部分则为经典类;
object 是Python 里所有类的最顶级父类;
类名 的命名规则按照"大驼峰命名法";
info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象

创建对象

python中,可以根据已经定义的类去创建出一个或多个对象。

创建对象的格式为:(实例化对象)

对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()

1.类和对象1

student = {}
def student_add():
    pass

def student_delete():
    pass




# 声明类
class Student(object):
    #  类属性
    clsas_name = "34期"
    num = 30
    # 方法
    def listen(self):
        print("听课")

    def homework(self):
        print("写作业")

# 实例化对象 : 类名()
s1 = Student()
s2 = Student()
# print(id(s1),id(s2))

# 对象通过句点符号调用属性和方法
# print(s1.class_name)  # 32
# print(s1.num)  # 32
# s1.listen()


# 设置实例属性
s1.name = "zhubiao"
s1.age = 31


# 实例对象.变量的查询顺序
# print(s1.name)
# print(s1.class_name)

# print(s1.name)
# print(s2.name)

# 结论:类属性只能查不能改
print(s1.clsas_name)
s1.clsas_name = "33期"

print(s1.clsas_name)
print(s2.clsas_name)


# 类属性修改
Student.clsas_name = "34期"
print(s1.clsas_name)
print(s2.clsas_name)






2.类和对象2
# 声明类
class Student(object):
    #  类属性
    clsas_name = "34期"
    num = 30

    # 初始化方法: 实例化自动触发  self:实例对象的空间地址
    def __init__(self, name, age, sex):
        # print("this is 初始化方法!")
        # print(id(self))
        # print(name,age,sex)
        self.name = name
        self.age = age
        self.sex = sex

    def listen(self, course="python"):
        print("%s正在听%s课" % (self.name, course))

    def homework(self):
        print("%s写作业" % self.name)


# 方式1 实例化和属性赋值

# s1 = Student()
# s2 = Student()
#
# s1.name = "潘磊"
# s1.age = 39
# s1.gender = "男"
#
# s2.name = "zhubiao"
# s2.age = 31
# s2.gender = "男"

# 方式2:
s1 = Student("潘磊", 39, "男")
s2 = Student("zhubiao", 31, "男")

# print(s1.name)
# print(s2.age)

# s1.height = "180cm"
# print(s1.height)
# print(s2.height)


# listen: 实例方法
s1.listen()
s2.listen("java")


3.一切皆对象
# 一切皆对象
# 数据类型 : 数字类型 布尔类型 字符串类型 列表 字典 集合 元组
s = "hello yuan"
s2 = str("hello yuan")
print(s2, type(s2))
s.upper()

l = [1, 2, 3]
l2 = list([2, 3, 4])
print(l2, type(l2))
l2.append(5)


# 扩展案例

class Weapon(object):
    def __init__(self, name, color, attack):
        self.name = name
        self.color = color
        self.attack = attack


class Hero(object):
    def __init__(self, name, hp, weapon, level=2, exp=2000, money=10000):
        self.name = name
        self.hp = hp
        self.weapon = weapon
        self.level = level
        self.exp = exp
        self.money = money


w1 = Weapon("弓箭", "黄色", 180)
yuan = Hero("yuan", 100, w1)
print(yuan.weapon)


# 声明类
class Student(object):
    #  类属性
    clsas_name = "34期"
    num = 30
    listen = 100
    # 方法
    def listen(self):
        print("听课")

    def homework(self):
        print("写作业")


print(Student.clsas_name)
Student.clsas_name = "xxx"

s1 = Student()
print(s1.clsas_name)
# s1.listen = 100
s1.listen()


4.静态方法和类方法
class Utils2(object):
    class_num = 30

    # 静态方法
    @staticmethod
    def add(x, y):
        return x + y

    @staticmethod
    def sub(x, y):
        return x - y

    # 类方法
    @classmethod
    def add_class_num(cls):  # cls: 当前类对象
        # print(id(cls),id(Utils))
        cls.class_num += 1

    def add_class_num2(self):  # cls: 当前类对象
        Utils2.class_num += 1


# 实例对象调用静态方法
u = Utils2()
# print(u.add(2, 3))

# 类对象调用静态方法
# u = Utils.add(6, 7)
# print(u)

#  类方法
Utils2.add_class_num()
print(Utils2.class_num)

u.add_class_num2()
print(u.class_num)
5.继承
class Animal(object):
    def eat(self):
        print("吃")

    def sleep(self):
        print("睡着了...")


class Dog(Animal):
    # 覆盖父类方法
    def sleep(self):
        # 引用父类方法
        super().sleep()
        print("仰天大睡")

    def bark(self):
        print("狂吠")


class Cat(Animal):

    def climetree(self):
        print("爬树")


d1 = Dog()
d1.sleep()
# d1.eat()


# c1 = Cat()
# c1.sleep()

6.多重继承
class Animal(object):
    def eat(self):
        print("吃")

    def sleep(self):
        print("睡着了...")


class Fly(object):
    def fly(self):
        print("飞")


class Dog(Animal):
    # 覆盖父类方法
    def sleep(self):
        # 引用父类方法
        super().sleep()
        print("仰天大睡")

    def bark(self):
        print("狂吠")


class Bat(Animal, Fly):
    def __init__(self, name, age):
        self.name = name
        self.age = age


class LittleBird(Animal, Fly):
    pass


b = Bat("bbb",22)
b.fly()

print(type("hello"))
print(type([1, 2, 3]))
print(type(b))

print(isinstance(b, Bat))
print(isinstance(b, LittleBird))
print(isinstance(b, Animal))
print(isinstance(b, Fly))
print(type(b) == Bat)

print(dir(b))
print(b.__dir__())
print(b.__dict__)  # {'name': 'bbb', 'age': 22}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值