python中的 “类” 知识点详解

类的基本定义

先创建一个类:

class Person:
    name = None
    age = None
    gender = None   #定义类的基本信息
    def print_obj(self):
        print("Person")   #用函数输出定义的类
print("zhangsan------------------------------------------------")

定义一个"zhangsan"的个体:

zhangsan = Person()   #给定义的累创建一个对象为"zhangsan"
print(zhangsan.name)
print(zhangsan.age)
print(zhangsan.gender)   #打印"zhangsan"的基本信息
zhangsan.print_obj()   #并打印该个体所属的类
#对"zhangsan"的数据进行修改:
zhangsan.name = "zhangsan"
zhangsan.age = 18
zhangsan.gender = "男"
print(zhangsan.name)
print(zhangsan.age)
print(zhangsan.gender)

定义一个个体"lisi":

print("lisi---------------------------------------------------")
然后定义一个个体"lisi",和"zhangsan"的定义一样,但不修改数据,比较他们的区别
lisi = Person()
print(lisi.name)
print(lisi.age)
print(lisi.gender)
lisi.print_obj()

执行结果为:
在这里插入图片描述

总结:

  1. 在个体未改变数据时,都执行的是所定义的类里边的数据

  2. 对"zhangsan"的数据进行修改,而"lisi"的数据并未发生改变,说明他们是同一类中的不同个体

类的初始化

实例化一个对象的时候,先新建对象,然后初始化操作

def __ new __(cls, *more): Create and return a new object. (创建并返回新的对象)

def __ init __(self): Initialize self. (对本身数据的初始化)

1. 对类本身初始化

class Person:
def __init__(self):
        print("Initialize")

# Person()     #初始化类

2. 输出个体所定义的数据

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        print("Initialize")
    def __str__(self):
        return self.name + "-" + str(self.age) + "-" + self.gender

zhangsan = Person("zhangsan", 18, "男")
lisi = Person("lisi", 20, "男")
print("print-------------------------------------")
#可以直接print对象所定义的数据
print(zhangsan)
print(lisi)

print("str---------------------------------------")
#也可以将定义数据的个体转换成str,然后调用定义的"str"方法
data = str(zhangsan)
data2 = str(lisi)
print(data)
print(data2)

输出结果为:
在这里插入图片描述

3. 返回所定义的属性

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gendeer = gender
    def __getattribute__(self, item):
        return "item:name"

zhangsan = Person("zhangsan", 18, "男")
lisi = Person("lisi", 20, "男")
print(lisi.name)

输出结果为: item:name

4.修改类以及个体的数据

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gendeer = gender
    def __setattr__(self, key, value):
        setattr(Person, key, value)

zhangsan = Person("zhangsan", 18, "男")
lisi = Person("lisi", 20, "男")
Person.name = "zhangsan123"  #修改类的name
print(Person.name)
lisi.age = 18     #修改"lisi"的 age
print(lisi.age)

执行结果为:
在这里插入图片描述

多态

定义: 根据传入对象的不同展示不同的参数

class Animals(object):    #定义一个类及所要执行的方法
    def __init__(self, name):
        self.name = name
    def run(self):
        print(f"{self.name} is running")

#下边定义多个类引用上边的类所定义的参数
class Lion(Animals):
    pass
class Tiger(Animals):
    pass
class Elephant(Animals):
    pass

def play(animals):   #定义一个play的参数
    animals.run()

#给定义的多个类传入不同的对象
lion = Lion("Lion")
tiger = Tiger("Tiger")
elephant = Elephant("Elephant")

#引用play参数去执行所传入对象中的方法
play(lion)
play(tiger)
play(elephant)

执行结果为:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值