记录从准研一假期自学PYTHON的全过程day8

94 阅读2分钟

本文已参加【新人创作礼】活动,一起开启掘金创作之路

今天是暑假在家自学的第八天

类和对象

类是一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。

-特征被称为属性 -行为被称为方法

类就相当于图纸,是一个模板,负责创建对象

属性和方法的确定:

对对象的特征描述,通常可以定义为属性

对象具有的行为,通常可以定义为方法

举例如下:

class person:
   def __init__(self, name, age, height):
       self.name = name
       self.age = age
       self.height = height

   def run(self):
       print("run")

   def eat(self):
       print("eat")

xiaoming=person("xiaoming",18,183)
xiaoming.eat()
xiaoming.run()

使用类创建对象:

cat=Cat()

实例化一个对象

*使用self可以在类的内部调用其他对象方法:

def eat(self):
    print("eat")
    self.run()

内置方法和属性

 __str__()
 __del__()

面向对象编程

类中的继承,被依赖的需要先构造。

比如房子家具,要先写出家具,再写出房子。

以下为编写的家具代码:

class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "%s 占地  %.2f" %(self.name, self.area)


chest = HouseItem("衣柜", 4)
bed = HouseItem("床", 1)
table = HouseItem("桌子", 1)

print(chest)
print(bed)
print(table)

以下为编写的全部代码:

写了两个类:一个HouseItem和House

House类中写的方法可以用来确定增加的家具占多大,还有多少剩余的地方

HouseItem类中构造了对象chest,bed,table

class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "%s 占地  %.2f" % (self.name, self.area)


chest = HouseItem("衣柜", 4)
bed = HouseItem("床", 1)
table = HouseItem("桌子", 1)

print(chest)
print(bed)
print(table)


class House:
    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        self.free_area = area
        self.item_list = []

    def __str__(self):
        return ("户型:%s\n 总面积:%.2f[剩余:%.2f]\n 家具:%s" % (self.house_type, self.area, self.free_area, self.item_list))

    def add_item(self, item: HouseItem):  
    # 在形参后加注解,可以提高编程效率,可以联想另一个类中的
        print("要添加%s" % item)
        if self.free_area < item.area:
            print("房间面积不够")
            return
        self.item_list.append(item.name)
        self.free_area -= item.area


# 创建房子对象
my_home = House("四室两厅", 180)
my_home.add_item(bed)
my_home.add_item(table)
my_home.add_item(chest)
print(my_home)

私有属性和私有方法

对象的某些属性和方法可能只希望在对象的内部被使用。

私有属性和私有方法就是对象希望不公开的属性和方法。

定义方法:

在定义属性和方法的过程中,在属性名和方法名前增加两个下划线。定义的就是私有属性和方法前增加两个下划线(__xx

私有方法: def __secret():

私有属性

class Woman:
    def __init__(self,name):
        self.name=name
        self.__age=18
xiaomei=Woman("xiaomei")

继承

继承分为单继承和多继承:

单继承的继承语法:

def son(father):

class Animal:
    def drink(self):
        print("drink")

    def eat(self):
        print("eat")

    def sleep(self):
        print("sleep")

    def run(self):
        print("run")


class Dog(Animal):
    def bark(self):
        print("wang")


a = Dog()
Dog.run()

image.png

当父类方法不能满足子类是,可以对其进行重写:

具体就是写在子类的 与父类同样的函数名,

在调用时候会使用到子类的函数。