1.什么是对象属性
类中的属性分为类的字段和对象属性
a.对象属性 - 属性的值会因为对象不同而不一样,这种属性就应该声明为对象属性
声明在init方法中 - 位置
以'self.属性名 = 值'的方式来声明(这儿的属性就是对象属性) - 方式
通过'对象.属性'的方式来使用 - 使用
b.类的字段 - 属性的值不会因为对象不同而不同,这种属性就声明成类的字段
直接声明类的里面,函数的外面的变量就是类的字段
以'字段名 = 值'
通过'类.字段'的方式来使用
class Person:
# num就是类的字段
num = 61
# 在init方法中声明对象属性
def __init__(self, name='', age=0):
self.name = name
self.age = age
练习:创建Dog类,有属性名字、类型、年龄
要求创建Dog的对象的时候:不能给年龄赋值,可以给类型赋值也可以不用给类型赋值,必须给名字赋值
对象方法eat:打印XXX在吃什么
class Dog:
def __init__(self, name, type='土狗'):
self.name = name
self.age = 0
self.type = type
def eat(self, food):
# self = dog1, food = '骨头'
# self = dog2, food = '屎'
print('%s在吃%s' % (self.name, food))
练习: 声明矩形类,拥有属性长和宽,拥有方法求面积和求周长
class Rect:
def __init__(self, length: float, width: float):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return (self.length + self.width) * 2
def main():
# 使用类的字段
Person.num = 100
print(Person.num)
r1 = Rect(100, 98)
print(r1.area())
print(r1.perimeter())
p1 = Person('小明', 18)
# 获取对象属性的值
print(p1.name, p1.age)
p2 = Person('小红', 20)
# 修改对象属性的值
p2.name = '李四'
print(p2.name, p2.age)
dog1 = Dog('大黄')
dog1.eat('骨头')
dog2 = Dog('旺财', '中华田园犬')
print(dog2.name, dog2.age, dog2.type)
dog2.eat('屎')