python 格式化、set类型和class类基础知识练习(下)

简介: lambda 参数1,参数2,参数3:表达式 特点: 1.使用lambda关键字创建函数 2.没有名字的函数 3.匿名函数冒号后面的表达式有且只有一个,是表达式不是语句 4.自带return

20 在类的内部,使用def定义的为实例方法,第一个参数为self,实例方法归实例所有



21 添加实例属性



class People:
    name = 'zhan',
    age = 20,
    def eat(self):
        print('正在吃饭')
# 创建对象
people = People()
people.eat()
# 添加属性
people.name2 = 'zhan'
people.age2 = 22


22. 类的__init__()方法


class People:
    # 初始化的操作,实例属性,自动执行
    def __init__(self):
        self.name = 'zhan'
        self.age = 20
    def eat(self):
        print('正在吃饭')
# 创建对象
people = People()
people.eat()


23. 类的__init__()使用参数



class People:
    # 初始化的操作,实例属性,自动执行
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def eat(self,food):
        print(self.name+food)
# 创建对象
people = People('叫我詹躲躲', 20)
people.eat('正在吃饭')
people.eat('洗澡')
people.eat('跑步')


24 理解类的self


# 类似于js里面的this
class Person:
    def eat(self):
        print(id(self))
        pass
    pass
person = Person()
person.eat()
print(id(person)) 
# self和对象指向同一个内存地址,self就是对象的引用
#<__main__.Person object at 0x0000020864815CC0>


25 魔术方法



__init__ :初始化实例属性
__str__ :自定义对象的格式
__new__ :对象实例化
__class__
__del__


class Animal:
    def __str__(self):
        return '3213213123123'
        pass
    pass
animal = Animal()
print(animal) 
class Animal:
    def __str__(self):
        return '3213213123123'
        pass
    pass
    def __new__(cls,*args,**kwargs):
        print("----new执行---")
        return object.__new__(cls) #真正创建对象实例的
        pass
animal = Animal()
print(animal) 
# __new__ 和__init__的区别

__new__ 类的实例化方法,必须返回实例,否则创建不成功

__init__数据属性的初始化工作,认为是实例的构造方法,接受实例化self并对其进行构造


__new__ 至少一个参数是cls,代表要实例化的类

__new__ 执行要比__init__早


26 案例练习 决战紫禁之巅



# 属性:
# name:玩家名称
# blood:血量
# 方法:
# tong() 捅一刀,掉10滴血
# kanren() 砍一刀掉15滴血
# chiyao() 补血10滴血
# __str__打印玩家的状态
class Role:
    def __init__(self,name,blood):
        self.name = name
        self.blood = blood
        pass
    # 砍人
    def tong(self,enemy):
        enemy.blood -=10
        info = '【%s】捅了【%s】一刀'%(self.name,enemy.name)
        print(info)
        pass
    # 砍人
    def kanren(self,enemy):
        enemy.blood -=15
        info = '【%s】砍了【%s】一刀'%(self.name,enemy.name)
        print(info)
        pass
    # 吃药
    def chiyao(self):
        self.blood +=10
        info = '【%s】吃了一口药,增加10滴血'%(self.name)
        print(info)
        pass
    def __str__(self):
        return '%s还剩下%s的血量'%(self.name,self.blood)
xmcx = Role('西门吹雪',100)
ygc = Role('叶孤城',100)
while True:
    if xmcx.blood<=0 or ygc.blood<=0:
        break
    print('*********************')
    xmcx.tong(ygc)
    xmcx.kanren(ygc)  
    print('*********************')
    ygc.tong(xmcx) 
    ygc.chiyao() 
    print('*********************')
    print(xmcx)
    print(ygc)
*********************
【西门吹雪】捅了【叶孤城】一刀
【西门吹雪】砍了【叶孤城】一刀
*********************
【叶孤城】捅了【西门吹雪】一刀
【叶孤城】吃了一口药,增加10滴血
*********************
西门吹雪还剩下50的血量
叶孤城还剩下25的血量
*********************
【西门吹雪】捅了【叶孤城】一刀
【西门吹雪】砍了【叶孤城】一刀
*********************
【叶孤城】捅了【西门吹雪】一刀
【叶孤城】吃了一口药,增加10滴血
*********************
西门吹雪还剩下40的血量
叶孤城还剩下10的血量
*********************
【西门吹雪】捅了【叶孤城】一刀
【西门吹雪】砍了【叶孤城】一刀
*********************
【叶孤城】捅了【西门吹雪】一刀
【叶孤城】吃了一口药,增加10滴血
*********************
西门吹雪还剩下30的血量
叶孤城还剩下-5的血量


27 实例练习1 水果类



class Fruit:
    def __init__(self,name,color):
        self.name = name
        self.color = color
    def showColor(self):
        print('%s的颜色为%s'%(self.name,self.color))
apple = Fruit('苹果','红色').showColor()
orange = Fruit('橘子','黄色').showColor()
watermelen = Fruit('西瓜','绿色').showColor()


28 验证self 就是实例本身



class CkeckSelf:
    def __str__(self):
        print(id(self)) 
        pass
CkeckSelf().__str__()
selfObj = CkeckSelf()
print(id(selfObj))


29 定义animal类,输出所有的属性



class Animal:
    def __init__(self, color, name, age):
        self.color = color
        self.name = name
        self.age = age
    def run(self):
        print('%s在跑步'%(self.name))
        pass
    def eat(self):
        print('%s在吃东西' %(self.name))
        pass
    def __str__(self):
        return '%s岁的%s的%s'%(self.age,self.color,self.name)
cat = Animal('黑色','小猫',2)
dog = Animal('白色','小狗',3)
cat.run()
dog.run()
print(cat)
print(dog)
# 小猫在跑步
# 小狗在跑步
# 2岁的黑色的小猫
# 3岁的白色的小狗
相关文章
|
17天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
33 6
|
22天前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
2天前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
2天前
|
开发者
除了交集运算,Set 类型还可以用于哪些数据结构的操作?
【10月更文挑战第30天】`Set`类型在数据结构操作方面提供了丰富的功能和便利,能够帮助开发者更高效地处理各种数据集合相关的任务,提高代码的简洁性和性能。
|
2天前
|
JavaScript 前端开发 开发者
set类型可以实现数组去重等
【10月更文挑战第30天】 `Set`类型在JavaScript中提供了一种方便、高效的集合数据结构,在数组去重、集合运算、数据存在性检查等方面都有广泛的应用,能够帮助开发者更简洁、高效地处理数据。
|
20天前
|
存储 数据安全/隐私保护 索引
|
2天前
|
JavaScript 前端开发 Java
除了 JavaScript,还有哪些编程语言支持 Set 类型
【10月更文挑战第30天】这些编程语言中的 `Set` 类型虽然在语法和具体实现细节上有所不同,但都提供了类似的集合操作功能,方便开发者在不同的编程场景中处理集合相关的数据和逻辑。
|
2天前
|
算法 JavaScript 前端开发
使用 Set 类型实现数组的交集运算
【10月更文挑战第30天】使用 `Set` 类型实现数组的交集运算是一种常见且有效的方法,它为我们处理数据集合的运算提供了一种便捷的途径。通过合理地运用这种方法,我们可以轻松地实现数组的交集计算,并在各种编程任务中灵活运用。
|
20天前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
31 4
|
19天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。
【10月更文挑战第14天】从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。本文深入探讨Set的核心理念,并通过示例代码展示了HashSet和TreeSet的特点和应用场景。
15 2