oneface 发表于 2020-11-1 15:35:20

type 类是什么样的类呢

type(property)
<class 'type'>

我以为property应该是函数,没想到是type
有大佬科普一下type类型是什么样的呢?

lhgzbxhz 发表于 2020-11-1 15:39:11

type类型就是类类型
你可能有点懵,但是我们平常使用的类都是type类型
例如:class C
此时C就是type类型
这行代码的意思是,property是一个类

kogawananari 发表于 2020-11-1 15:41:50

这说明property也是type实例化出来的呗{:10_293:}
>>> type(type(1))
<class 'type'>

kogawananari 发表于 2020-11-1 15:45:38

property是一个装饰器 返回一个数据描述符 至于类的类还是函数的类 这个是callable泛型{:10_292:}

oneface 发表于 2020-11-1 15:49:13

kogawananari 发表于 2020-11-1 15:45
property是一个装饰器 返回一个数据描述符 至于类的类还是函数的类 这个是callable泛型

完全没懂{:10_266:}

oneface 发表于 2020-11-1 15:50:33

lhgzbxhz 发表于 2020-11-1 15:39
type类型就是类类型
你可能有点懵,但是我们平常使用的类都是type类型
例如:class C


property装饰器是一个类 类型吗

oneface 发表于 2020-11-1 15:54:02

kogawananari 发表于 2020-11-1 15:45
property是一个装饰器 返回一个数据描述符 至于类的类还是函数的类 这个是callable泛型

懂了,谢谢

oneface 发表于 2020-11-1 15:55:10

lhgzbxhz 发表于 2020-11-1 15:39
type类型就是类类型
你可能有点懵,但是我们平常使用的类都是type类型
例如:class C


懂了,谢谢

kogawananari 发表于 2020-11-1 15:59:20

oneface 发表于 2020-11-1 15:50
property装饰器是一个类 类型吗

property装饰器 是数据描述符 而数据描述符是一个类

kogawananari 发表于 2020-11-1 16:04:45

class Stu:
    @property
    def age(self):
      return 12

stu = Stu()
stu.age = 18
print(stu.age)
del stu.age

使用property装饰器

等价于下面的
class Stu:
    class Stu_descriptor:
      def __init__(self):
            self.val = 12
      def __get__(self, obj, objtype):
            return self.val
      def __set__(self, obj, val):
            print("can't set attribute")#抛出异常
      def __delete__(self, obj):
            print("can't delete attribute")#抛出异常
    age = Stu_descriptor()
   

stu = Stu()
stu.age = 18
print(stu.age)
del stu.age
页: [1]
查看完整版本: type 类是什么样的类呢