1.成员
在类中你能写的所有内容都是类的成员
2.变量
1. 实例变量:昨天写的就是实力变量,由对象去访问的变量
2. 类变量: 这个变量属于类.但是对象也可以访问
实例变量
class Person:
def __init__(self, name, id, gender, birth):
self.name = name # 实例变量 对象里的变量
self.id = id
self.gender = gender
self.birth = birth
p = Person("wusir", "10086", "不详", "1900-12-15")
print(p.birth)
p.birth = "1840-5-6"
print(p.birth)
# 实例变量一般使用 对象.属性
print(p.name)
类变量
class Person:
country = "大清"
def __init__(self, name, gender):
self.name = name
self.gender = gender
p = Person("武sir", "未知")
p2 = Person("太白", "两性")
Person.country = "中国" # 类变量最好是使用类名来访问
# p.country = "大清" # 大坑::没有修改类变量
# p2.country = "大明"
print(p.country) # 类变量可以给对象使用
print(p2.country) # 类变量可以给对象使用
3.方法
1.实例方法:昨天写的就是实例方法. 使用 对象.方法()
特点: 在声明的时候. 需要给出self,self必须放在第一格位置 .
在调用的时候. 自动的会把对象那个传递给形参的self
2.类方法(@classmethod): 类方法是属于类的.
特点: 在声明的时候需要给出一个能够接受类名的参数, cls, 也必须放在参数的第一个
在调用的时候. 自动的把xx对象的类传递给cls
3. 静态方法(@staticmethod): 静态方法也是属于类的. 静态方法就好比,我们在类中定义了一个函数
静态方法一般和类方法差不多. 使用类名去访问
实例方法
class Computer:
# 实例方法
def play(self):
print("电脑可以扫雷")
# 在定义实例方法的时候. 必须给出一个参数 self
# 形参的第一个参数, 自动的把对象给传递进来
def work(self): # self 是当前类的对象
print(self)
print("电脑用来工作")
c = Computer()
c.work() # 调用的时候不需要手动给出self
print(c)
类方法
class Person:
# 实例方法
def chi(self):
print("人会吃")
@classmethod # 装饰器, 此时这个方法是一个类方法
def he(cls): # 此时接收到的cls是类名
# print(cls)
print("人会喝")
# 用对象访问
# p = Person()
# p.he() # 在调用类方法的时候. 默认的把类名传递给类方法
# print(Person)
# 类方法一般用类名去访问
Person.he() # 类方法
静态方法
class Person:
@staticmethod # 静态方法
def yue():
print("fsadf")
# 静态方法可以使用对象访问. 也可以使用类名访问. 但是一般推荐使用类名访问
p = Person()
p.yue()
# 推荐使用类名访问
Person.yue()
4.属性
在方法上添加一个@property. 可以吧一个方法变成一个属性.单数这个属性不可以被赋值
当我们某一个属性必须经过计算才能得到结果的时候使用
class Person:
def __init__(self, name, gender, birth):
self.name = name
self.gender = gender
self.birth = birth # 2000 2018
# 年龄 -> 应该是算出来的. 而不是直接存储
@property # 把一个方法更改成一个属性, 每次拿属性的时候都会自动的去执行这个方法
# 方法的返回值就是属性值
def age(self): # 实例方法
print("我是方法")
return 2018 - self.birth
p1 = Person("武sir", "未知", 2000)
print(p1.age) # 看着像一个变量一样使用, 实际上这里是调用的一个方法
print(p1.age)
# p1.age = 26 # 不可以的, 因为age是一个方法. 不是一个变量
5.私有
所有以双下划綫开头的放马,变量都是私有内容. 外界无法访问. 除非你主动暴露这些内容
class Person:
__qie = "潘潘" # 类变量
def __init__(self, name, mimi):
self.name = name
self.__mimi = mimi # 私有内容 实例变量
def gaosu(self):
print(f"把秘密告诉了太白, 第二天所有人都知道了{self.__mimi}")
print(Person.__qie) # 私有的类变量只能在类中调用
# return self.__mimi
def __yue(self): # 私有的实例方法
print("我要和宝宝约")
@staticmethod
def __koujiao():
print("韩志远希望和嫂子一起抠脚")
@classmethod
def __fangqi(cls):
print("和嫂子一起放气")
p = Person("wusir", "和嫂子的故事")
# print(p.__mimi) # 私有的内容只能在类里面调用
p.gaosu()
print(Person.__qie)
p = Person("wusir", "嫂子的故事")
p.__yue()
Person.__koujiao()
- Python 整理一
---恢复内容开始--- Python (pailen)最近学习这个语言,其实早在几年前学习perl的时候就知道有这个语言了,在讲perl的那本书后面就推荐学习python,并且还附加了二章的入门.当 ...
- Windows下编译打包Spice PC客户端
目录 1 环境搭建 2 编译客户端 3 打包客户端 1 环境搭建 1.1 准备工作 安装启动: 安装替换图标工具: Resource Hacker 安装exe制作工具: NSIS(提取码:3dfp ...
- msys2 命令行添加镜像地址
sed -i "1iServer = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686" /etc/pacman.d/mi ...
- msys2 + clion安装所需的mingw64编译环境
pacman -S mingw-w64-x86_64-toolchain 输出结果为: $ pacman -S mingw-w64-x86_64-toolchain:: 在组 mingw-w64-x8 ...
- 《黑白团团队》第八次团队作业:Alpha冲刺 第三天
项目 内容 作业课程地址 任课教师首页链接 作业要求 团队项目 填写团队名称 黑白团团队 填写具体目标 认真负责,完成项目 团队项目Github仓库地址链接. 第三天 日期:2019/6/17 成员 ...
- Linux杂谈: gcc对结构体大小的默认处理方式
1. 发现问题 最近在编写代码过程中发现,对一个结构体进行 sizeof 操作时,有时候大小是填充过的,有时候又没有填充. 那么,如果在代码中没有显示的指定要求编译器进行对齐时,gcc的默认处理是怎样 ...
- 值得推荐的C#不同版本语言特性
C#语言在不断地版本升级中,为我们提供了很多新的语言特性.其中,有很多使用的语言特性,我觉得在实际开发中用起来很方便,能够简化我们的代码,增强可读性,提高开发效率. 小编不才,在这里给大家整理了一些实 ...
- Java 复习整理day05
1 package com.it.demo01_oop; 2 3 import java.util.Arrays; 4 5 /* 6 案例: 演示面向过程和面向对象代码的区别 7 8 面向过程编程思想 ...
- Effective C++ 第二版 17)operator=检查自己 18)接口完整 19)成员和友元函数
条款17 在operator=中检查给自己赋值的情况 1 2 3 class X { ... }; X a; a = a; // a 赋值给自己 >赋值给自己make no sense, 但 ...
随机推荐
- Linux Firefox Adobe Flash Player 安装和更新
1.下载 Firefox Adobe Flash Player 使用Linux上的火狐浏览器访问如下的下载网址: https://get.adobe.com/flashplayer/ 选择下载 &qu ...
- IE浏览器 div或者其他容器的height属性无效 滚动条问题解决办法
1.height设置定值是功能好使的 但是如果在不同分辨率的电脑上运行程序 会出现样式上的偏差 2.height的百分比是根据父级来的 所以将父级的height设置好(如果当前容器上方有很多父级 ...
- Python学习---socketServer编程
学会去看源码 服务器端: import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): ...
- python .loc vs .iloc区别
1.loc意义:通过行标签索引行数据 例: loc[n]表示索引的是第n行(index 是整数) loc[‘d’]表示索引的是第’d’行(index 是字符) 2. .iloc :通过行号获取行数 ...
- electricity meter就是电表
英式英语metre意思是度量衡里面的单位:米 美式英语拼为 meter 除了“米”,还有一个意思是“计量器”,比如 parking meter就是是路边停车投币计时器,cab meter就是出租车的计 ...
- Beta版本 为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 == Dec 25。
Beta版本 软件的测试版本,经常在各类著名软件中的前期发布版本的后缀中可见,包括大名鼎鼎的windows系统,这个阶段的版本一直加入一些新的功能. 软件测试可分为alpha测试.beta测试和联合测 ...
- [AHOI2004]数字迷阵
嘟嘟嘟 应该算一道结论题吧. 首先很明显的一点,就是对于ai,j,我们只用求出ai,1就行了,剩下的就是斐波那契和矩阵快速幂的事. 至于如何求ai,1,用两种方法,但是哪一个我都不懂为啥,网上也没有解 ...
- if not
if not x 在python中的意思是如果x为空 a = [] if not a: print 1 此代码会打印出1 a = [1,2,3] if not a: print 1 此代码不会打印出1 ...
- es6之proxy和reflect
一.proxy //Proxy和Reflect //供应商 let obj={ time:"2017-11-21", name:"net", _r:123 } ...
- es6的解构赋值
分类:数组.对象.字符串.布尔值.函数参数.数值解构赋值