# 属性的初识# class Person:##     def __init__(self,name,hight,weight):#         self.name = name#         self.__hight = hight#         self.__weight = weight##     @property#     def bmi(self):#         return '%s 的bmi 值%s' %(self.name,self.__weight / self.__hight ** 2)

# p1 = Person('大阳哥',1.68,70)# # print(p1.bmi())# print(p1.bmi)# # 属性  : 将一个方法  伪装成一个 属性,在代码的级别上没有本质的提升,但是让其看起来跟合理.# print(p1.name)# p1.name = 'alex'# print(p1.name)

# 属性的改class Person:    def __init__(self,name,age):        self.name = name        if type(age) is int:            self.__age = age        else:            print( '你输入的年龄的类型有误,请输入数字')    @property    def age(self):        return self.__age

    @age.setter    def age(self,a1):        '''判断,你修改的年龄必须是数字'''        if type(a1) is int:            self.__age = a1        else:            print('你输入的年龄的类型有误,请输入数字')

    @age.deleter    def age(self):        del self.__age

p1 = Person('帅哥',20)print(p1.age)# print(p1.__dict__)# p1.age = 23# print(p1.age)del p1.age

# property : 类似于bmi这种,area,周长....  ***# @age.setter  **# @age.deleter *

# 类方法

# class A:#     def func(self):  # 普通方法#         print(self)##     @classmethod  # 类方法#     def func1(cls):#         print(cls)

# a1 = A()

# a1.func()# A.func(a1)

# 类方法: 通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls.# A.func1()

# a1 = A()# a1.func1()  # 对象调用类方法,cls 得到的是类本身.

#类方法的应用场景:#1, 类中 有些方法是不需要对象参与.

# class A1:#     name = 'alex'#     count = 1##     @classmethod#     def func1(cls):  # 此方法无需对象参与#         return cls.name + str(cls.count + 1)

# A.func1(111) 不可取# a1 = A()# print(a1.func1())# print(A.func1())

# 静态方法

# 2, 对类中的静态变量进行改变,要用类方法.

# 3,继承中,父类得到子类的类空间.

# class A:#     age = 12#     @classmethod#     def func1(cls):  # 此方法无需对象参与#         # print(cls)#         # 对B类的所有的内容可以进行修改.#         print(cls.age)#         # return cls.name + str(cls.count + 1)## class B(A):#     age = 22# B.func1()

# 不通过类方法,想让我的父类的某个方法得到子类的类空间里面的任意值.# class A:#     age = 12##     def func2(self):#         print(self)  # self 子类的对象,能得到子类 空间的任意值## class B(A):#     age = 22## b1 = B()# b1.func2()

# 静态方法:class A:

    @staticmethod    def login(username, password):        if username == 'alex' and password == 123:            print('登录成功')        else:            print('登录失败...')

A.login('alex',1234)

# def login(username,password):#     if username == 'alex' and password == 123:#         print('登录成功')#     else:#         print('登录失败...')## login('alex',1234)

# 1,代码块.清晰.# 2,复用性.

属性,类方法@classmethod的更多相关文章

  1. python-静态方法staticmethod、类方法classmethod、属性方法property

    Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def  ...

  2. 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

    [面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...

  3. python - class类 (二) 静态属性/类方法/静态方法

    静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...

  4. python的类的 静态属性 类方法 静态方法

    一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...

  5. python__基础 : 类属性,类方法,静态方法

    类属性  定义在类里面,方法外面的属性,一般属于这个类,如下面的 num 就是类属性: class Test: num = 类属性用 实例.类属性   或者 类.类属性 都可以访问, 如 a = Te ...

  6. Python面向对象之类属性类方法静态方法

    类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...

  7. python类方法@classmethod与@staticmethod

    目录 python类方法@classmethod与@staticmethod 一.@classmethod 介绍 语法 举例 二.@staticmethod 介绍 语法 举例 python类方法@cl ...

  8. 静态方法staticmethod和类方法classmethod

    静态方法staticmethod和类方法classmethod 一.类方法classmethod 把一个方法变成一个类中的方法,这个方法可以直接利用类来调用,不需要依托任何的对象,即不需要实例化也可以 ...

  9. Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...

随机推荐

  1. Loj 2008 小凸想跑步

    Loj 2008 小凸想跑步 \(S(P,p_0,p_1)<S(P,p_i,p_{i+1})\) 这个约束条件对于 \(P_x,P_y\) 是线性的,即将面积用向量叉积表示,暴力拆开,可得到 \ ...

  2. 谨慎使用 FileInfo.Exists 实例方法,而是使用 File.Exists 静态方法替代

    如果你在代码中使用了 FileInfo.Exists 实例方法来判断一个文件是否存在,也许会发现此方法可能错误地判断来一个文件是否真的存在.这是一个坑. 本文将介绍坑的原因,并提供填坑的办法. 本文内 ...

  3. 我的第一个Mybatis程序

    第一个Mybatis程序 在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于“i ...

  4. 【MVC】View与Control之间数据传递

    1. Controller向View传递数据 使用ViewData传递数据[弱类型,字典型ViewDataDictionary] ViewData[“Message_ViewData”] = “ He ...

  5. frameset的用法

    碰到一个frameset的问题,因为我比较懒,就先从网上拿来一篇基础知识,呵呵,好记性不如烂笔头啊        所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESE ...

  6. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(十)-- 发布(Windows)

    本篇将在这个系列演示的例子上继续记录Asp.Net Core在Windows上发布的过程. Asp.Net Core在Windows上可以采用两种运行方式.一种是自托管运行,另一种是发布到IIS托管运 ...

  7. 关于 Javascript 严格模式下多文件合并时注意

    Javascript 在第一行使用 "use strict" 声明严格模式. 但是在多个 js 文件合并时就需要注意了,可能你的是严格模式,但别的文件不是,就会造成错误. 为什么使 ...

  8. 调试 FastAdmin 出现 Failed to parse SourceMap

    看到群里有人说在调试 FastAdmin出现 SourceMap 出错. 报错信息为: Failed to parse SourceMap 来自 Karson 说明: 这个文件是用于匹配原有less中 ...

  9. MQ的不足

    调用方实时依赖执行结果的业务场景,请使用调用,而不是MQ.MQ是互联网分层架构中的解耦利器,那所有通讯都使用MQ岂不是很好?这是一个严重的误区,调用与被调用的关系,是无法被MQ取代的.比如用户登录场景 ...

  10. Apache+modjk布置tomcat集群

    一.版本: Apache: 2.2.14: 下载地址:http://archive.apache.org/dist/httpd/binaries/win32/ Mod_jk:tomcat-connec ...