(8)python 类和对象
一、类和对象
python可以动态的添加删除变量和方法
类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self
1.构造函数
类中的构造方法名为 __init__(self,...,...),如果类没有定义构造方法,则会自动包含一个只有self的构造方法
class Person:
'这是一个Person类'
def __init__(self,name='tom',age=10):
print('创建一个Person类')
self.name=name
self.age=age
def say(self,content):
print(content)
python一个类只有一个构造函数。不向java net 可以重载多个构造函数
2.创建对象
调用构造方法创建类的对象,不需要使用new关键字
p=Person()#打印创建一个Person类
调用
p.name
p.say('你好')
赋值
p.name='lilei'
3.动态操作对象
动态添加变量
p.skills=['Singing','Swimming']
动态删除变量
del p.name
动态创建方法
动态创建方法是,不会自动绑定到第一个参数,所以调用方法时,需要手动绑定
def hi(self):
print("say hello") p.hello=hi
p.hello(p)
如果想要动态的方法能自动绑定需要用到types模块下的MetodType
略
4.self
类中使用一个方法调用另一个方法
class Dog:
def jump(self):
print('jump')
def run(self):
self.jump()
print('run')
p=Dog()
p.run()
二、方法
1.方法调用
def a():
print('全局的a方法')
class Dog():
def a():
print('Dog下的a方法')
def b(self):
print( self ,'Dog下的b方法') a()#使用全局方法
Dog.a()#使用位绑定的类方法
########
dog=Dog()
dog.b()#使用位绑定的类方法
Dog.b(dog)#使用位绑定的类方法
Dog.b('dog')#使用位绑定的类方法,实例名可以不是Dog类,任意字符串即可
打印

2.类方法和静态方法
类方法和静态方法可以直接调用函数,区别是类方法会自动绑定
class Dog():
@classmethod
def a(self):
print('Dog下的a方法')
@staticmethod
def b(self):
print( self ,'Dog下的b方法') Dog.a()
Dog.b('dog')
3.函数修饰器@
三、成员变量
1.类变量和实例变量
在类中没有操作实例变量时,得出的结果都是相同的
class Student:
age=8
name='tom' Student.name#类变量 打印tom
stu=Student() stu.name#实例变量 打印tom、
如果在构造函数创建实例后,类变量和实例变量会变成两个不一样的变量
class Student:
age=8
name='tom'
def s(self,age,name):
#新创建的两个实例变量
self.age=age
self.name=name
stu=Student()
stu.s(10,'jack') print(Student.name)#打印 tom
print(stu.name)#打印 jack
2.用property函数定义属性
四、封装
双下划线
五、继承
1.继承
定义类时使用(父类1,父类2,...)表示继承,python允许多继承
class Fruit:
def fruit(self):
print('水果类') class Food:
def food(self):
print('食物类') class Apple(Fruit,Food):#继承水果和食物类
def apple(self):
print('苹果类') a=Apple()
a.apple()
a.fruit()
a.food()
2.重写父类方法
class Apple(Fruit,Food):
def fruit(self):
print('苹果类')
3.
六、动态性
python是动态语言,可以动态增加删除
七、多态
由于python是弱语言天生带有多态性
八、枚举
(8)python 类和对象的更多相关文章
- python类与对象各个算数运算魔法方法总结
1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...
- python 类和对象的属性
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...
- 一文讲全了Python 类和对象内容
摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan . Pytho ...
- python类、对象
python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...
- python 类、对象、方法、属性
在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...
- python类、对象、方法、属性之类与对象笔记
python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗, ...
- python类与对象基本语法
面向对象编程的2个非常重要的概念:类和对象. 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类就相当于制造飞机时的图纸,用它 ...
- python 类和对象
类和对象 类 1.类的组成 数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用 属性引用:类名.属性(增删改查) 实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...
- Python类和对象
目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...
- python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...
随机推荐
- HDU 6208 The Dominator of Strings(AC自动机)
The Dominator of Strings Time Limit: 3000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java ...
- mootools框架里如何使用ajax
ajax可通过直接写源码实现,但有点繁琐,现在流行的ajax框架都集成了ajax的功能,而且写起来非常简单方便.当然mootools也不例外.mootools是一个非常优秀的javascript的库, ...
- 一些比较高效的CSS写法建议
当浏览器解析html的时候,它构造了一个文档树来展现所有被显示的元素. 它在特定的样式表中去匹配元素,根据标准的css的层叠,继承和顺序规则, 在mozilla的实现中(可能其他的也是这样),对于每一 ...
- Spring源码解析-实例化bean对象
spring加载配置文件,AbstractApplicationContext类中的refresh方法起着重要的作用. @Override public void refresh() throws B ...
- Out of memory due to hash maps used in map-side aggregation解决办法
在运行一个group by的sql时,抛出以下错误信息: Task with the most failures(4): -----Task ID: task_201411191723_723592 ...
- PHP代码优化小笔记
1.十万级以上次执行情况,方法可以被静态化,考虑声明为静态.html静态页面速度更快 2.echo 替换print:echo时逗号连接符替换点号连接符 3.循环之前设置循环最大次数,循环参数不要使用函 ...
- (转)详解HTML网页源码的charset格式
关于HTML网页源码的字符编码(charset)格式(GB2312,GBK,UTF-8,ISO8859-1等)的解释 crifan http://www.crifan.com/summary_expl ...
- jquery遍历之后代
向下遍历dom树的jquery方法 children()方法返回被选元素的所有直接子元素,只会对向下一级对dom树进行遍历. 例子 代码: $(document).ready(function(){ ...
- JVM 性能排查 自己做的笔记
Live Memory 1.Class Tracker 展示类或包的实例个数与时间的关系.需要录制才可以看到. 1)可以添加指定的类或包. 2.All Objects 查看所有类的实例个数和大小.可以 ...
- win8优化
微软发布win8系统之后受到很多电脑爱好者的关注,都想去尝试体验win8操作系统,对电脑系统优化和系统性能提高一直是我们所追求的.而很多用户都会选择第三方软件对系统进行相关优化,其实我们可以手动对电脑 ...