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 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...
随机推荐
- 常见的python的unittest用法
python的unittest好处是通过python脚本编写用例,每个用例可以单独调试初始化和清理动作,因为都是用例都是代码所以调试起来也很方便:它的缺点是得先学会python,难易程度见仁见智吧,对 ...
- Html Title 标签
Html Title 标签 Title 是 HTML Head 内部标签 <html> <head> <!-- Title标签:HTML的标头标题 --> < ...
- JSOIWC2019游记
世除我WC...都去广二了qaq,就我还在nj ycs至少也去了pkuwc啊 这个JSOIWC2019的内容看起来很水,进入条件简单,但窝啥都不会,肯定垫底 内容清单: 1.26 上午听机房dalao ...
- 单元测试系列之三:JUnit单元测试规范
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6762032.html Junit测试代 ...
- HAOI 2018 染色(容斥+NTT)
题意 https://loj.ac/problem/2527 思路 设 \(f(k)\) 为强制选择 \(k\) 个颜色出现 \(s\) 种,其余任取的方案数. 则有 \[ f(k)={m\choos ...
- 如何使用JavaScript UI控件(WijmoJS)构建Electron应用程序
概述 What is Electron? Electron是一个使用JavaScript.HTML和CSS构建跨平台桌面应用程序的框架. 您可以将Electron与纯JavaScript或您选择的Ja ...
- vi中换行、翻页和查找功能
vi时,按ESC进入Command模式, 1. 移动光标命令:j 向下移动一行:k 向上移动一行:h 向左移动一个字符:l 向右移动一个字符:对于 j.k.l和h键,命令前加数字,移动多行:如 3j, ...
- wrk 安装使用
==================== 安装 ====================https://github.com/wg/wrk/wiki sudo yum -y groupinstall ...
- canvas资料
w3c比较全面的api http://www.w3school.com.cn/tags/html_ref_canvas.asp 一个总结比较全面的网站 http://blog.csdn.net/qq_ ...
- JVM垃圾回收(一)- 什么是垃圾回收
什么是垃圾回收? 垃圾回收是追踪所有正在被使用的对象,并标注剩余的为garbage.这里我们先从JVM的GC是如何实现的说起. 手动内存管理 在开始介绍垃圾回收之前,我们先复习一下手动内存管理.它是指 ...