Pyton的类特性

Python的类很类似一个容器,而且还是一个动态的容器,可以随时往里面增加内容:包括它的函数,成员。

例如如下的这个例子,默认创建一个空的python类,如果忘记了给他添加成员函数,则可以这么做

class Empty:

pass

1.增加构造函数

#这里必须要传入一个参数

#该参数也就是调用方的输入数据

#这里就是Empty的一个实例对象

def empty_con(e):

print ‘空对象开始构造了‘

print (type(e))

Empty.__init__ = empty_con

这里我们测试一下:

e1 = Empty()

发现输入结果如下:

空对象开始构造了

<type ‘instance‘>

2.同样的道理我们可以增加(或则是替换)他的析构函数

def empty_des(e):

print ‘对象开始析构了‘

print(type(e))

Empty.__del__ = empty_des

这里我们也测试一下析构函数:

e2 = Empty()

del e2

输出如下:

‘对象开始析构了

<type ‘instance‘>

3.依次类推咱们同样也是可以给类(类型)来增加成员变量的,

当让也是可以只针对对象来增加成员

Empty.x = 100

Empty.y = 200

通过调用dir(Empty)可以清楚的看出来Empty下面的成员结构。

时间: 2024-10-13 22:57:11

Pyton的类特性的相关文章

lombok系列3:lombok的实验类特性

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> lombok系列3:lombok的实验类特性 - 记事本 - 博客频道 - CSDN.NET 记事本 我的记事本 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &nbsp CS

高级类特性----内部类

内部类 在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类. 内部类和外层封装它的类之间存在逻辑上的所属关系 Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称. Inner class的名字不能与包含它的类名相同: Inner class可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量. 内部类举例 class A { private int s; public class B { public void mb() { s

面向对象高级类特性

当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量. 类属性.类方法的设计思想 ·类属性作为该类各个对象之间共享的变量.在设计类时,分析哪些类属性不因

Python中C++类特性的实现原理

<span style="font-size:18px;">#python类的特性</span> <span style="font-size:18px;">#而且python还可以实现函数的重载,通过不同的参数来做不同的内部实现</span> <span style="font-size:18px;">#def overload(*args):</span> <spa

高级类特性----接口(intertface)

接 口 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合. 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现. 接口定义举例 public interface Runner { int id = 1; public void start(); public void run(); public void stop()

高级类特性----static关键字

static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量. class Circle { private double radius

高级类特性----final关键字

final 关键字 在Java中声明类.属性和方法时,可使用关键字final来修饰. final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次. final标记的类不能被继承.提高安全性,提高程序的可读性. final标记的方法不能被子类重写.增加安全性. final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才能使用.final PI=3.14; 关键字final应用举例 public final class Test { public static int tot

反射+type类+Assembly+特性

什么是元数据,什么是反射: 程序是用来处理数据的,文本和特性都是数据,而我们程序本身(类的定义和BLC中的类)这些也是数据. 有关程序及其类型的数据被称为元数据(metadata),它们保存在程序的程序集中. 程序在运行时,可以查看其它程序集或其本身的元数据.一个运行的程序查看本身的元数据或者其他程序集的元数据的行为叫做反射. 下面我们我们来学习如何使用Type类来反射数据,以及如何使用特性来给类型添加元数据. Type位于System.Reflection命名空间下 Type类 预定义类型(i

C#: +(特性 ) + Attitude C#(类)前面或者(方法)前面 (中括号)定义

首先要说的是,可能一些刚接触C#的朋友常常容易把属性(Property)跟特性(Attribute)弄混淆,其实这是两种不同的东西.属性就是面向对象思想里所说的封装在类里面的数据字段,其形式为: 1: public class HumanBase 2: { 3:     public string Name { get; set; } 4:     public int Age { get; set; } 5:     public int Gender { get; set; } 6: } 在