def foo(name, age, gender, content):
print(name, age, gender, content)
第一次定义类:
class Bar:
def foo(self, name, age, gender, content):
print(name, age, gender, content)
obj = Bar()
obj.foo(小明,10岁,男,上山去砍柴)
obj.foo(小明,10岁, 男,开车去东北)
obj.foo(小明,10岁,男,开车去东北)
类和函数的比较:
一、定义
函数:
def + 函数名(参数)
面向对象:
class => 名字叫Bar类
def => 名字叫foo的方法,第一个参数必须是self
二、执行
函数:
函数名(参数)
面向对象:
o = Bar() # 创建中间人(对象、实例)
o.foo()
定义类并执行类中的方法:
class 类名:
def 方法名(self, arg):
pring(arg)
return 1
中间人 = 类名()
ret = 中间人.方法名(1)
print(ret)
self代指调用方法的对象(中间人)
class Bar():
def foo(self, arg):
print(self, arg)
z1 = Bar()
print(z1)
z1.foo(111)
print('*'*20)
z2 = Bar()
print(z2)
z2.foo(666)
<__main__.Bar object at 0x0000017CAFC71BA8>
<__main__.Bar object at 0x0000017CAFC71BA8> 111
********************
<__main__.Bar object at 0x0000017CAFC89EF0>
<__main__.Bar object at 0x0000017CAFC89EF0> 666
class Bar():
def foo(self, arg):
print(self, self.name, self.age, self.gender, arg)
z = Bar()
z.name = 'alex'
z.age = 84
z.gender = 'zhong'
z.foo(666)
# <__main__.Bar object at 0x00000205FFCA9EF0> alex 84 zhong 666
z1 = Bar()
z1.name = 'eric'
z1.age = 73
z1.gender = 'nv'
z1.foo(666)
# <__main__.Bar object at 0x00000200D89F0470> eric 73 nv 666
第二次定义类:
class Bar:
def add(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def delete(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def updates(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def get(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
obj = Bar()
# 把公用的参数放到了类里,这就完成了“封装”
obj.name = '小明'
obj.age = 10
obj.gender = ‘男’
obj.add(上山去砍柴)
obj.delete(开车去东北)
obj.updates(开车去东北)
# 构造方法
特殊作用:在obj = 类名()内部 1、创建对象 2、通过对象执行类中的一个特殊方法
class Bar:
def __init__(self, name, age):
"""
构造方法:一般做初始化,即一些公用参数
"""
self.name = name
self.age = age
print('123')
def foo(self):
print('456')
z = Bar('alex', 84) # 执行Bar()内部就自动执行__init__方法
print(z)
print(z.name)
z.foo()
# 123
# <__main__.Bar object at 0x000001B1E5CC9EF0>
# alex
# 456
举个栗子:
class Person:
def __init__(self, name, age):
self.n = name
self.a = age
def show(self):
print("%s---%s" % (self.n, self.a))
lihuan = Person('李欢', 18)
huxianglin = Person('胡香林', 73)
lihuan.show()
huxianglin.show()
对上述“第二次定义的类”进行修改
class Bar:
def __init__(self):
self.name = '小明'
self.age = 10
self.gender = '男'
def add(self, content):
pass
def sub(self, content):
pass
def updates(self, content):
pass
def get(self, content):
pass
obj = Bar()
obj.add('上山去砍柴')
obj.sub('开车去东北')
obj.updates('开车去东北')