一、属性

class A(object):
    # 类属性
    a = "A"

    def __init__(self):
        # 实例属性
        self.b = "B"

    class Meta:
        c = "C"

print(A.a)
print(A().b)
print(A().Meta.c)

1、类属性

2、实例属性,

类属性,类本身只能调类属性,不能调用实例属性

实例属性,实例对象可以调用类属性和实例属性

可以在类里面再定义一个类,

使用A().Meta.c

这个类指定的属性,就是控制这个类本身进行哪些操作,就好比

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20, verbose_name='名称')
    bpub_date = models.DateField(verbose_name='发布时间')
    bcomment = models.IntegerField(default=0, verbose_name='评论量')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_books'  # 指明数据表名
        verbose_name = '图书'  # 在admin站点中显示的名称
        verbose_name_plural = 'verbose_name' # 显示复数的名称

    def __str__(self):
        return self.btitle

我们的Models类里的Meta,里面定义的表名,在对整张表的属性控制,定义在class Meta这个类里面。如果对表里的某些字段,是在外面定义的。

二、方法

1、实例方法

2、类方法

3、静态方法

4、加上了property后,这个方法可以作为属性进行使用

5、魔法方法,在模型类时候,对这个类输出打印的时候,使用这个方法

class A(object):
    # 类属性
    a = "A"

    def __init__(self):
        # 实例属性
        self.b = "B"

    class Meta:
        c = "C"

    # 实例方法
    def a_print(self):
        print('a_print')

    # 类方法
    @classmethod
    def class_print(cls):
        print(cls.__name__)
        print('class_print')

    # 静态方法
    @staticmethod
    def static_print():
        print('static_print')

    # 加上了property后,这个方法可以作为属性进行使用
    @property
    def data(self):
        print('data')

    # 魔法方法,在模型类时候,对这个类输出打印的时候,使用这个方法
    def __str__(self):
        return '__str__'


# 这些方法的调用,类名直接调用的包括
A.a_print(A())
A.class_print()
A.static_print()
A.data
# 对于一个对象的时候,可以调用所有方法
A().a_print()
A().class_print()
A().static_print()
A().data

# print(A.a)
# print(A().b)
# print(A().Meta.c)

# 定义了另外一个类,在B类中调用A类中的方法,有几种形式
# 1、可以通过继承的方式,B继承了A 使用A中的方法
# 2、在B类中定义一个属性等于类对象也是可以,然后用属性. 内容
class B(object):
    A = A()


B().A.a_print()
# 在数据库查询的时候用到了
# BookInof.objects.get(),在模型类本身没有objects.这个属性,但是继承了Models,又继承了BaseModels,
# 这个类里面有个属性=Cla(),这个属性就是这个类对象。而Cla()类里面有get方法,所以可以直接这样使用。

 三、 定义了另外一个类,在B类中调用A类中的方法,有几种形式 。

 1、可以通过继承的方式,B继承了A 使用A中的方法 。 

2、在B类中定义一个属性等于类对象也是可以,然后用属性.点内容

class B(object):
    A = A()
B().A.a_print()


在数据库查询的时候用到了 BookInof.objects.get(),在模型类本身没有objects.这个属性,但是继承了Models,又继承了BaseModels, 这个类父里面有个属性=Cla(),这个属性就是这个类对象。而Cla()类里面有get方法,所以可以直接这样使用。相当于Objects = Cla()