class Turtle:
bodyColor = "绿色"
footNum = 4
weight = 10
hasShell = True
#会爬
def crawl(self):
print("乌龟会爬")
#会吃东西
def eat(self):
print("乌龟吃东西")
#会睡觉
def sleep(self):
print("乌龟在睡觉")
#会缩到壳里
def protect(self):
print("乌龟缩进了壳里")
class 类名:
多个(≥0)类属性…
多个(≥0)类方法…
注意,无论是类属性还是类方法,对于类来说,它们都不是必需的,可以有也可以没有。另外,Python 类中属性和方法所在的位置是任意的,即它们之间并没有固定的前后次序。
对已定义好的类进行实例化,其语法格式如下:
#类名(参数)
turtle1=Turtle()
python可以动态添加类对象的属性和方法
def say_hi(self):
print("Hi, my name is " + turtle.name)
turtle.say_hi = say_hi
turtle.say_hi(turtle)
注:动态添加的属性和方法只属于该对象别的实例化对象不能使用
class Turtle:
name="Mike"
color="black"
legs=4
def __init__(self,name,color,legs):
self.name=name
self.color=color
self.legs=legs
上述代码中name、color、legs就是类变量
class Turtle:
name="Mike"
color="black"
legs=4
def __init__(self):
self.name="Mike"
self.color="black"
self.legs=4
def say(self):
self.catalog = 13
此 CLanguage 类中,name、color 、legs及catalog 都是实例变量。其中,由于 init() 函数在创建类对象时会自动调用,而 say() 方法需要类对象手动调用。因此,Turtle 类的类对象都会包含 name、color 和legs实例变量,而只有调用了 say() 方法的类对象,才包含 catalog 实例变量。
class Turtle:
#类构造方法,也属于实例方法
def __init__(self):
self.name = "Mike"
self.color = "red"
# 下面定义了一个say实例方法
def say(self):
print("正在调用 say() 实例方法")
实例方法最大的特点就是,它最少也要包含一个 self 参数,用于绑定调用此方法的实例对象(Python 会自动完成绑定)。
class Turtle:
#类构造方法,也属于实例方法
def __init__(self):
self.name = "Mike"
self.color = "red"
#下面定义了一个类方法
@classmethod
def info(cls):
print("正在调用类方法",cls)
注意,如果没有 @classmethod,则 Python 解释器会将 fly() 方法认定为实例方法,而不是类方法。
class Turtle:
@staticmethod
def info(name,color):
print(name,color)
类中的所有变量称为属性 ↩︎
类中的所有函数通常称为方法 ↩︎
客观的事物封装成类(将数据和方法放在一个类中就构成了封装) ↩︎
在python中一个类可以集成于另一个类也可以继承多个类,被继承的类叫父类(或者叫基类,base class),继承的类叫子类 ↩︎
指的是一类事物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的子类对象调用相同的方法,产生不同的执行结果,多态可以增加代码的灵活度 ↩︎