提示:以下是本篇文章正文内容,下面案例可供参考
一、定义类和对象
类,是一种模板,可以包含多种属性和方法,不同方法可以实现不同功能
对象,是类的实例,可以使用类的属性和方法
代码如下(示例):
#创建类
class Car(Object):
#属性
color = 'red'
#方法
def run():
print('car is running')
car1 = Car() #创建对象
car1.run() #调用run方法
print(car1.color) #访问类属性
car1.speed = 100 #添加属性
二、方法和属性
1.实例方法
代码如下(示例):
# 实例方法
class Animal(Object):
#实例方法,使用def关键字定义,第一个参数默认传实例对象本身,一般使用self作为第一个参数(可以用其他名字标识)
def test(self):
print('实例方法')
#一个类里可以有多个实例方法
def show_name(self, name):
self.name = name
2. __init __()方法
初始化方法,用来定义实例属性,初始化数据
代码如下(示例):
# __xxx__()表示python的内置函数
__init__()方法:初始化函数,设置一些初始数据
__new__():创建并返回一个实例对象,调用一次,就创建一个实例对象
__str__():将对象转化为字符串str时测试,打印对象信息
class People:
# self指向实例对象本身
def __init__(self, name, sex):
self.name = name
self.sex = sex
def __str__(self):
return '姓名:%s 性别:%s' % (self.name, self.sex)
# 没有声明这个函数时,系统会自动生成,经常在做单例模式的时候使用
def __new__(cls, *args, **kwargs):
print('----new函数----')
return object.__new__(cls) # 创建对象
p = People('li', 'male') # self不用传参
print(p) # 姓名:li 性别:male
3.类方法
class WhichCountry:
country = 'China'
# 类方法,用classmethod进行修饰
@classmethod
def get_country(cls):
return cls.country
@classmethod
def change_country(cls, country_name):
cls.country = country_name
return cls.country
ww = WhichCountry()
print(WhichCountry.get_country())
print(WhichCountry.change_country('us'))
print(ww.get_country())
4.静态方法
静态方法,用staticmethod修饰,可以不用参数
5.类属性和实例属性
类属性:类对象所拥有的属性,它被类的所有对象所共有,类对象和实例对象都可以访问
实例属性:实例对象所拥有的属性,只能通过实例对象访问
class Person:
name = 'li' # 类属性
def __init__(self, age):
self.age = age # 实例属性
p1 = Person(90)
p2 = Person(100)
p1.name = 'zhao'
print(p1.name, p2.name) # zhao li
Person.name = 'wang'
print(p1.name, p2.name) # zhao wang
三、继承
1.什么是继承
将多个类所共有的方法提取到父类方法中,字类只需继承父类,而不需一一实现每个方法
优点:提高效率,减少代码重复,精简代码的层级结构,便于拓展
2.实现
代码如下(示例)
# 单继承
class 类名(父类):
'''
字类可以继承父类中公共的方法和属性
'''
pass
# 父类
class Animal:
def act(self):
print('running')
pass
def eat(self):
print('eating')
pass
# 子类
class Dog(Animal):
def sound(self):
print('wang wang wang')
# 子类
class Cat(Animal):
def sound(self):
print('miao miao miao')
dd = Dog()
dd.eat() # 调用父类中的方法
# 多继承
class Pet:
def __init__(self, name):
self.name = name
def show_name(self):
print('name %s' % self.name)
class Cat(Animal, Pet):
def sound(self):
print('miao')
cc = Cat('huahua')
cc.show_name() # 调用Pet父类中的方法