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

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

python 格式化、set类型和class类基础知识练习(上):https://developer.aliyun.com/article/1483372


18.利用set找出独一无二的数据


li = [1,2,3,3,2,3,4,4,5,1,2,1]
def uniqueNum(li):
    set1 = set(li)
    for i in set1:
        li.remove(i)
    set2 = set(li)

    for j in set2:
        set1.remove(j)
    return set1

print(uniqueNum(li))

19 面向对象编程 oop


# 面向过程编程 根据业务从上到下开始编程
# 类的结构
# 类名 属性 方法

class People:
    name = 'zhan',
    age = 20,
    def eat(self):
        print('正在吃饭')

# 创建对象
people = People()
people.eat()

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岁的白色的小狗


相关文章
|
6天前
|
Python
在Python中,全局变量和局部变量是两种不同类型的变量
【5月更文挑战第10天】Python中的全局变量在函数外部定义,作用域覆盖整个程序,生命周期从开始到结束。局部变量仅限于函数内部,生命周期从调用到返回。在函数内修改全局变量需用`global`关键字声明,否则会创建局部变量。
21 3
|
1天前
|
Python
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
2024年最新【Python】常见的 数据类型:整数类型,Python面试题整理最新
|
3天前
|
数据采集 Python
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
10个Python set 常用操作函数!,bilibili面试题
|
5天前
|
Python
Python-类视图和蓝图
Python-类视图和蓝图
11 2
|
5天前
|
存储 Java 数据安全/隐私保护
Python----类对象和实例对象
Python----类对象和实例对象
9 2
|
5天前
|
存储 JSON 数据格式
Python知识点——高维数据的格式化
Python知识点——高维数据的格式化
7 0
|
5天前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
9 0
|
6天前
|
存储 Python
Python自定义函数练习(持续更新中~)
Python自定义函数练习(持续更新中~)
6 0
|
6天前
|
IDE 开发工具 Python
Python类型检查
【5月更文挑战第9天】Python类型检查
12 1
|
6天前
|
Python
Python使用类型注解
【5月更文挑战第7天】
8 2