python day20面向对象-属性,类方法,静态方法
一、属性的初识
# 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 * 类方法:
通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls.
# class A:
# def func(self): # 普通方法
# print(self)
#
# @classmethod # 类方法
# def func1(cls):
# print(cls) # a1 = A() # a1.func()
# A.func(a1)#需要传参
类方法的应用场景:
1, 类中 有些方法是不需要对象参与.
class A:
name = 'alex'
count = 1 @classmethod
def func1(cls): # 此方法无需对象参与
return cls.name + str(cls.count + 1)
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,复用性.
python day20面向对象-属性,类方法,静态方法的更多相关文章
- 【学习笔记】--- 老男孩学Python,day18 面向对象------ 属性,类方法,静态方法
属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. 应用场景: 类中 要用名词时候可以用@property 比如,求面积,周长,平方,体脂 等运算时候 例如: bmi是名词,最 ...
- python面向对象 : 属性, 类方法, 静态方法
一. 属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. property应用 : 类似于bmi这种,area,周长.... 需要用到计算的. # 求BMI体质数:BMI = 体 ...
- Python面向对象之类属性类方法静态方法
类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init ...
- python的类的 静态属性 类方法 静态方法
一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...
- Python Class 的实例方法/类方法/静态方法
实例方法.类方法.静态方法 class MyClass(object): class_name = "MyClass" # 类属性, 三种方法都能调用 def __init__(s ...
- python__基础 : 类属性,类方法,静态方法
类属性 定义在类里面,方法外面的属性,一般属于这个类,如下面的 num 就是类属性: class Test: num = 类属性用 实例.类属性 或者 类.类属性 都可以访问, 如 a = Te ...
- python - class类 (二) 静态属性/类方法/静态方法
静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...
- python 面向对象:类方法&静态方法
一.类方法 1.1 概念和语法说明 类方法就是针对类对象定义的方法.在类方法内部可以直接访问类属性或者调用其他的类方法 语法如下: @classmethod def 类方法名(cls): pass 说 ...
- python类属性和类方法(类的结构、实例属性、静态方法)
类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...
随机推荐
- mac忘记操作密码
转载于:https://blog.csdn.net/wu110112/article/details/70312987 如果忘记mac登陆密码应该如何处理呢? 这里大家请勿着急,我来帮大家解决这个问题 ...
- Java的集合框架(第一次小结)
知识点一.集合框架Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中二.集合框架的结构Collection:集合接口Map:键值对接口List:有序不唯一列表接口S ...
- [c/c++] programming之路(20)、字符串(一)
一.字符串 #include<stdio.h> #include<stdlib.h> void main(){ ]="notepad"; printf(&q ...
- 剑指offer(39)平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 题目分析 第一种方法: 正常思路,应该会获得节点的左子树和右子树的高度,然后比较高度差是否小于1. 可是这样有一个问题,就是节点重复遍历了,影 ...
- JS设计模式(2)策略模式
什么是策略模式? 定义:根据不同参数可以命中不同的策略 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护. 何时使用:有许多种情况,而区分它们的只是他们直接的行为. ...
- 7.24-Codeforces Round #494 (Div. 3)
链接:http://codeforces.com/contest/1003 A. Polycarp's Pockets 题型:模拟 题意:把初始集合拆分,要求相同的数不在同一个集合中,求出需要的集合个 ...
- 第十届蓝桥杯2019年C/C++ 大学A组省赛试题
2019年蓝桥杯第十届软件类省赛 C/C++ 大 学 A 组 试题 A: 平方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包括 1 ...
- P4512 【模板】多项式除法
思路 多项式除法板子 多项式除法 给出\(A(x)\)和\(B(x)\),求一个\(n-m\)次的多项式\(D(x)\),一个\(m-1\)次多项式\(R(x)\),满足 \[ A(x)=B(x)D( ...
- 《温故而知新》JAVA基础八
集合接口与泛型 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气 集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的 ...
- CSS设置DIV边框为圆角,添加背景色溢出的问题
这么几天需要做一个类似于层级展示的东西,最后一层需要做一些div框来展示数据,我用css设置了div的边框为圆角,但是添加背景色的时候颜色溢出,覆盖了四个角的圆弧,效果如图所示: css代码如下: . ...