python之类的详解

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

下面是类属性和实例属性的引用过程

python之类的详解_第1张图片

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Python)