python_class类的定义和使用

Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。具体的形式如下:

# 例:类的概念

class 人类:

名字 = ‘未命名‘ # 成员变量

def 说话(内容): # 成员函数

print 内容 # 成员变量赋初始值

某人 = 人类() # 定义一个人类对象某人

某人.名字 = "路人甲"

某人.说话 (‘大家好‘) # 路人甲说话

>>> 大家好! # 输出

示例程序一(类的定义):

>>> class pp:

...     pass

...

>>> p = pp()

>>> print p

<__main__.pp instance at 0x00CA77B0>

>>>

打印了这个变量的类型。它告诉我们我们已经在__main__模块中有了一个Person类的实例。

示例程序二(__init__用法):

说明:__init__方法在类的对象被建立时,马上运行。该方法用来对对象进行初始化。

>>> class Person:

...     def __init__(self, name):

...             self.name = name

...     def sayHi(self):

...             print ‘Hello, my name is‘, self.name

...

>>> p = Person(‘Swaroop‘)

>>> p.sayHi()

Hello, my name is Swaroop

>>>

示例程序三(__del__方法):

说明:__del__方法是在程序退出时调用的。

>>> class Person:

...     population = 0

...     def __init__(self, name):

...             self.name = name

...             print ‘(Initializing %s)‘ % self.name

...     def __del__(self):

...             print ‘%s says bye.‘ % self.name

...             Person.population -= 1

...

...     def howMany(self):

...             if Person.population == 1:

...                     print ‘I am the only person here.‘

...             else:

...                     print ‘We have %d persons here.‘ % Person.population

...

>>> A = Person(‘aa‘)

(Initializing aa)

>>> A.howMany()

We have 0 persons here.

>>> B = Person(‘bb‘)

(Initializing bb)

>>> B.howMany()

We have 0 persons here.

>>> ^Z

aa says bye.

bb says bye.

Python中定义和使用类的形式为:class 类名[(父类名)]:[成员函数及成员变量],类名为这个类的名称,而父类名为可选,但定义父类名后,子类则拥有父类的相应属性和方法。在用类定义成对象时,会先调用__init__构造函数,以初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针就好了。而在对象销毁时,则会调用__del__析构函数,定义类的成员函数时,必须默认一个变量(类似于C++中的this指针)代表类定义的对象本身,这个变量的名称可自行定义,下面例子将使用self变量表示类对象变量。

# 例:类定义及使用

class CAnimal:

name = ‘unname‘ # 成员变量

def __init__(self,voice=‘hello‘): # 重载构造函数

self.voice = voice # 创建成员变量并赋初始值

def __del__(self): # 重载析构函数

pass # 空操作

def Say(self):

print self.voice

t = CAnimal() # 定义动物对象t

t.Say() # t说话

>> hello # 输出

dog = CAnimal(‘wow‘) # 定义动物对象dog

dog.Say() # dog说话

>> wow # 输出

Python编程中类可以承继父类属性,形式为class 类名(父类),子类可以继承父类的所有方法和属性,也可以重载父类的成员函数及属性,须注意的是子类成员函数若重载父类(即名字相同),则会使用子类成员函数

# 例:类的继承

class CAnimal:

def __init__(self,voice=‘hello‘): # voice初始化默认为hello

self.voice = voice

def Say(self):

print self.voice

def Run(self):

pass # 空操作语句(不做任何操作)

class CDog(CAnimal): # 继承类CAnimal

def SetVoice(self,voice): # 子类增加函数

SetVoice self.voice = voice

def Run(self,voice): # 子类重载函数Run

print ‘Running‘

bobo = CDog()

bobo.SetVoice(‘My Name is BoBo!‘) # 设置child.data为hello

bobo.Say()

bobo.Run()

>> My Name is BoBo!

>> Running

时间: 2024-10-06 22:53:03

python_class类的定义和使用的相关文章

Time类的定义(成员函数)

2-2 Time类的定义 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握类与对象的定义: 设计一个时间类Time,私有数据成员有hour(时).minute(分).second(秒): 公有成员函数有:setHour(int)设置数据成员hour的值,非法的输入默认为12:setMinue(int)设置数据成员minute的值,非法输入默认为0:setSecond(int)设置数据成员second的值,非法输入默认为0:setT

关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法

类的定义与对象的实例化操作 <?php //类里面的成员是属于对象的class Hero{    public $name;//成员变量    //成员属性(存在于强类型语言中)    protected $blood;    private $attack;    //成员方法    function skill(){        echo "$this->name<br>control";            }} $s = new Hero();//造

【C++】C++自学旅程(7):类类型初识——类的定义

新年第一博,新年快乐! 一直不明白面对对象的“对象”是什么意思,想象不出:在学OC时出现了奇怪的语法,让程序“自己”运行:EDA的沙龙中提到了类类型,但不知道这是个什么鬼.终于这些问题的谜底要被我自己自学揭开了,哈哈哈!类类型我来啦! 类(Class)是一种自定义数据类型,是具有相同属性和行为的一组对象的集合,它是面向对象中最为重要的概念之一.类类型中有变量来存储属性和数据,叫做成员变量或数据成员,还有操作这些数据的函数,叫做成员函数. 类类型的作用: 实现封装 数据隐藏 继承和派生多态 ……

java问题:类的定义,对象的定义?

java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里定义的数据和函数在这个对象里都有了.在Java当中,对象是一个类的实体.

模板类的定义和实现可以不在同一个文件中

写c++程序时我们经常会把函数的定义写在xxx.h中,把函数的实现写在xxx.cpp, 但是当我们写带模版的函数和类时,这样写 就会出现问题,如下: stack.h //stack.h #ifndef STACK_HPP #define STACK_HPP #include <vector> #include <stdexcept> template<typename T, typename TContainer = std::vector<T>> clas

php 类中定义全局变量|php类定义变量|php类定义常量

PHP 预定义超全局数组/变量 => http://www.q3060.com/list3/list117/23295.html PHP预定义变量 - PHP 超级全局变量 => http://www.q3060.com/list3/list117/23278.html php怎么定义全局变量 => http://www.q3060.com/list3/list117/22852.html php 的全局变量与局部变量 => http://www.q3060.com/list3/l

[基础] 模板+友元类外定义

下面这种定义方式会报错: Undefined symbols for architecture x86_64 template <typename T> class longint{ public: T num; longint (T a = 0) { num = a; } friend ostream& operator<< (ostream& out, const longint<T>& Lint); ~longint (){ ; } pri

WPF控件自绘——基础,Control类的定义

用于记录自己的学习WPF控件,大神请飘过... [WPF控件类继承关系图] 所有可以自定义模版的控件都是从Control继承,所以我们来看看Contorl类里面到底有些什么.为以后的控件自定义模版做好准备.废话少说先来看看WPF中Control类的定义 1 namespace System.Windows.Controls 2 { 3 public class Control : FrameworkElement 4 { 5 public static readonly DependencyPr

Java知多少(18)类的定义及其实例化

类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: 1 public class Dog{ 2 String name; 3 int age; 4 5 void bark(){ // 汪汪叫 6 System.out.println("汪汪,不要过来"); 7 } 8 9 void hungry(){ // 饥饿 10 System.out.println("主人,我饿了"); 11 } 12 } 对