本文已参加【新人创作礼】活动,一起开启掘金创作之路
今天是暑假在家自学的第八天
类和对象
类是一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。
-特征被称为属性 -行为被称为方法
类就相当于图纸,是一个模板,负责创建对象
属性和方法的确定:
对对象的特征描述,通常可以定义为属性
对象具有的行为,通常可以定义为方法
举例如下:
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()
当父类方法不能满足子类是,可以对其进行重写:
具体就是写在子类的 与父类同样的函数名,
在调用时候会使用到子类的函数。