class Animal:
formula = ['color','weight','age'] #类的属性
def eat(self): #类的方法
print("eating...")
self 这个参数其实就是被创建的实例本身。
self这个参数名称是可以随意修改名称的,但是按照Python的规矩,我们还是统一使用self。
__init__() 如果在类中定义了它,在创建实例的时候它能够帮你自动处理很多事情--比如新增实例属性。即使我们在创建实例的时候不去引用它,其中的命令也会被自动地执行。
class Animal:
formula = ['color','weight','age'] #类的属性
def __init__(self, name):#__init__可以自定义参数,用法和函数参数一样。
self.name = name #左边的变量作为类的属性, 右边传入的这个参数作为变量。
def eat(self): #类的方法
print("eating...")
class Animal:
formula = ['color','weight','age'] #类的属性
def __init__(self, name):#__init__可以自定义参数,用法和函数参数一样。
self.name = name #左边的变量作为类的属性, 右边传入的这个参数作为变量。
def eat(self): #类的方法
print("eating...")
Cat、Dog等都会继承Animal这个类。
class Cat(Animal):
formula = ['color','weight','age'] #类的属性
cat = Cat("Tom") #类的实例化
cat.eat() #调用类的方法
class TestA: #类属性被重新赋值,是否会影响到类属性的引用
attr = 1
obj_a = TestA()
TestA.attr = 42
print(obj_a.attr) ##输出42
#实例属性被重新赋值,是否会影响到类属性的引用?
class TestA:
attr = 1
obj_a = TestA()
obj_b = TestA()
obj_a.attr = 42
print(obj_a.attr ) #输出42
print(obj_b.attr) #输出1
#类属性和实例属性具有相同的名称
class TestA:
attr = 1
def __init__(self):
self.attr = 42
obj_a = TestA() print(obj_a.attr ) #输出42
TestA.attr = 100 print(obj_a.attr ) #输出42
obj_a.attr = 1000 print(obj_a.attr ) #输出1000
下面是类属性和实例属性的引用过程