面向对象
类
类的定义与实例化
class Animal(): #类的定义
pass
dog = Animal() #类的实例化
cat = Animal()
创建实例使用类名+(),类似函数调用的形式创建
实例属性的定义
例:一个动物类,并创建出两个实例dog, cat,分别赋予不同的名字和年龄并打印出来。
class animal():
def __init__(self,name,age):
self.name = name
self.age = age
dog = animal('timi',5)
cat = animal('zz',8)
print(cat.age)
print(dog.name)
实例属性的初始化
- 在定义 Animal 类时,可以为 Animal类添加一个特殊的__init__()方法,当创建实例时,init()方法被自动调用。
- 需要注意的是,init() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。
- 定义类后,就可以相应的实例化对象了,需要注意的是,在实例化的时候,需要提供除self以外的所有参数。
类属性
类的属性不属于任何一个对象,而是属于这个类。如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。
class Animal():
localtion = 'Asia'
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
Animal.count += 1
dog = Animal('wangwang', 1)
print(Animal.count)
cat = Animal('mimi', 3)
print(Animal.count)
print(dog.localtion) # ==> Asia
print(cat.localtion) # ==> Asia
# 类属性,也可以通过类名直接访问
print(Animal.localtion) # ==> Asia
类属性也是可以动态添加和修改的,需要注意的是,因为类属性只有一份,所以改变了,所有实例可以访问到的类属性都会变更
class Animal():
localtion = 'Asia'
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
Animal.count += 1
dog = Animal('wangwang', 1)
print(Animal.count)
cat = Animal('mimi', 3)
print(Animal.count)
print(dog.localtion) # ==> Asia
print(cat.localtion) # ==> Asia
# 类属性,也可以通过类名直接访问
print(Animal.localtion) # ==> Asia
Animal.localtion = &