2021-01-11

本文介绍了Python中一切皆对象的特性,如数据类型即类,还阐述了绑定方法和非绑定方法的特点。提到property装饰器可将功能属性伪装成数据属性。此外,讲解了继承是解决类间冗余问题的方式,Python支持多继承,以及继承背景下的属性查找规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 class people :
    def __init__(self,name):
         self.name = name
    @property
    def name(self):
         return self.name
     @name.setter
     def name(self,x):
         if type(x) is not str :
             raise  Exception("名字必须是字符串类型")
         self.__name = x


     @name.deleter
     def name(self):
         print("不允许删除")
 p1 = people("egon")
 del p1.name

python中一切皆对象:
#数据类型就是类,类也可以说是新的数据类型
#list.append 其中append就是一种绑定方法
#好处:取值方便,省空间

#property
#python的内置方法,一般直接加在函数的正上方,用作装饰器,将类中的功能属性伪装成数据属性
#调用的时候直接跟数据属性的使用方法一样,即self.name
#将函数藏起来,被装饰函数不需要传参

class people:
    def __init__(self,name):
        self.__name = name

    @property    #查询
    def name (self):
      return self.__name

    @name.setter   #修改行为
    def name(self,x):
        if type (x) is not str:
            raise Exception("名字必须是字符串")
        self.__name = x
    @name.deleter
    def name(self):
        print("不允许删除")

p1 = people('egon')
p1.name ="egon"
print(p1.name)


```python
# 了解性知识点:
# 将装饰器函数删掉,名字改好,name= property(get_name,set_name,del_name)括号内为装饰名
# class people :
#     def __init__(self,name,weight,height):
#         self.name = name
#         self.weight = weight
#         self.height = height
#
#     @property
#     def bmi(self):
#         return self.weight/(self.height**2)
#
# p1 =people("egon",70,1.83)
#
# print(p1.bmi)
class people :
    def __init__(self,name):
        self.name = name
    @property
    def name(self):
        return self.name
    @name.setter
    def name(self,x):
        if type(x) is not str :
            raise  Exception("名字必须是字符串类型")
        self.__name = x


    @name.deleter
    def name(self):
        print("不允许删除")
p1 = people("egon")
del p1.name

python中一切皆对象:
数据类型就是类,类也可以说是新的数据类型
list.append 其中append就是一种绑定方法
好处:取值方便,省空间

property
python的内置方法,一般直接加在函数的正上方,用作装饰器,将类中的功能属性伪装成数据属性
调用的时候直接跟数据属性的使用方法一样,即self.name
将函数藏起来,被装饰函数不需要传参
class people:
def init(self,name):
self.__name = name

@property    #查询
def name (self):
  return self.__name

@name.setter   #修改行为
def name(self,x):
    if type (x) is not str:
        raise Exception("名字必须是字符串")
    self.__name = x



@name.deleter
def name(self):
    print("不允许删除")

p1 = people(‘egon’)
p1.name =“egon”
print(p1.name)

了解性知识点:
将装饰器函数删掉,名字改好,name= property(get_name,set_name,del_name)括号内为装饰名

绑定方法
绑定给谁就有谁来调用,谁来调用就会将自己当做第一个参数传入
非绑定方法
特点 :不与类和对象绑定,意味着谁都可以来调用,但无论谁来调用就是一个普通函数,没有自动传参的效果

但凡在类中定义一个函数,默认就是绑定给对象的,应该有对象来调用,调用时会将对象当做第一个参数自动传入
类可以调,但类调用就是一个普通函数,不会自动传参

类中定义一个函数,被classmethod装饰过,就绑定给类,应该由类来调用,调用时会将类当做第一个参数自动传入,
对象可以调,但还是一个绑定方法,会将类自动传入

类中定义的函数,被staticmethod装饰过,就成为一个非绑定的方法即一个普通函数,谁都可以调用,
但无论谁来调都是一个一个普通函数,没有自动传参的效果

继承是创建新类的一种方式
新建的类称之为子类
被继承的类称之为父类,基类,超类

类是用解决对象之间冗余问题
而继承则是来解决类与类之间的冗余问题
继承的特点:子类可以遗传父类的属性

在python中支持多继承
继承的父类越多,查找起来越乱
先抽象在继承

继承背景下的属性查找
先自己,再类再父类再父父类

了解内容:
但凡是继承了objet类的子类以及该子类的子子孙孙类都是新式类
反之就是经典类
在Python2中有新式类和经典类之分,不继承就是经典类

在python3中全是新式类,不继承会被默认继承objet
uuid.uuid1
会自动生成一个编号

#python中多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值