【知识点】class类(python)

类可以一个总的概括名称,比如人类,人类里面有子类,比如男人,女人等等,男人女人就可以继承人类这个大类。

1 首先是定义:

class person():
    pass

xiaoming=person()

2 __init__初始化

每次定义声明的时候都会首先执行__init__函数。注意__init__前后是两个下划线。

class person():
    #name="NULL"  #和c不同的是这里可以省略
    def __init__(self,name):
        self.name=name       #此处同时也声明了一个name变量 

xiaoming=person("xm")
print(xiaoming.name)

输出:xm
 

3 进一步理解

class person():
    name="NULL"
    weight=0
    def __init__(self,name):
        self.name=name
    def set_weight(self,w):
        self.weight=w
    def print_weight_and_name(self):
        print("名字:",self.name,"体重:",self.weight)
        
xiaoming=person("xm")
xiaoming.set_weight(130)
xiaoming.print_weight_and_name()

输出:名字: xm 体重: 130

4 继承

woman继承了person类

class person():
    name="NULL"
    weight=0
    def __init__(self,name):
        self.name=name
    def set_weight(self,w):
        self.weight=w

class woman(person):
    sex="NULL"
    height=0
    def __init__(self,name):
        self.name=name
        self.sex="girl"
    def set_height(self,h):
        self.height=h
        
xiaohua=woman("xh")
xiaohua.set_weight(100)
xiaohua.set_height(140)
print(xiaohua.name,xiaohua.sex,xiaohua.height,xiaohua.weight)

输出:xh girl 140 100

子类会继承父类的变量和函数。子类可以调用父类的变量和函数。

子类可以重写父类的函数,如上个例子中__init__函数就进行了重写,比父类的__init__多出了个self.sex="girl"

5 __getitem__

这个函数可以对类里面的变量进行迭代遍历,但是因为变量不止一个,所以可以通过重写这个函数自定义实现遍历哪些变量。

class Animal:
    def __init__(self, animal_list,age):
        self.animals_name = animal_list
        self.animals_age=age

    def __getitem__(self, index):
        return self.animals_name[index]


animals = Animal(["dog","cat","fish"],[1,2,3])
for animal in animals:
    print(animal)

假设有一个动物类,我们在定义的时候就传入dog cat fish,1 2 3 来对类中self.animals_name和self.animals_age初始化,__getitem__此时重写里面可以看到是对animals_name进行迭代。所以在对animal进行for遍历时输出的就是name

 

 

改成这样就可以输出名字和年龄了:

    def __getitem__(self, index):
        return self.animals_age[index],self.animals_name[index]

参考:

Python 面向对象 | 菜鸟教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值