类对象
类对象支持两种操作:属性引用和实例化。
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。
类对象创建后,类命名空间中所有的命名都是有效属性名。
class
MyClass
:
""" 一个简单的类实例 """
i = 12345
def f ( self ) :
return ' hello world '
# 实例化类
x = MyClass ( )
# 访问类的属性和方法
print ( " MyClass 类的属性 i 为: " , x . i )
print ( " MyClass 类的方法 f 输出为: " , x . f ( ) )
""" 一个简单的类实例 """
i = 12345
def f ( self ) :
return ' hello world '
# 实例化类
x = MyClass ( )
# 访问类的属性和方法
print ( " MyClass 类的属性 i 为: " , x . i )
print ( " MyClass 类的方法 f 输出为: " , x . f ( ) )
类的方法
在类地内部,使用
def
关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。
class
people
:
#定义基本属性
name = ' '
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def __init__ ( self , n , a , w ) :
self . name = n
self . age = a
self . __weight = w
def speak ( self ) :
print ( " %s 说: 我 %d 岁。 " % ( self . name , self . age ) )
# 实例化类
p = people ( ' runoob ' , 10 , 30 )
p . speak ( )
#定义基本属性
name = ' '
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def __init__ ( self , n , a , w ) :
self . name = n
self . age = a
self . __weight = w
def speak ( self ) :
print ( " %s 说: 我 %d 岁。 " % ( self . name , self . age ) )
# 实例化类
p = people ( ' runoob ' , 10 , 30 )
p . speak ( )
执行以上程序输出结果为:
runoob 说: 我 10 岁。
继承
Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:
class DerivedClassName(BaseClassName1): <statement-1> . . . <statement-N>
需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。
BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:
多继承
Python同样有限的支持多继承形式。多继承的类定义形如下例:
class
DerivedClassName
(
Base1
,
Base2
,
Base3
)
: <
statement
-
1
> . . . <
statement
-
N
>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。