面向对象
- 对象的特征——属性
属性——对象具有的各种特征。 每个对象的每个属性都拥有特定值。 例如:顾客张浩和李明的年龄、姓名不一样。 - 对象的特征——方法(操作,行为)
方法——对象执行的操作(通常会改变属性的值)。 顾客对象的方法—购买商品。 收银员对象的方法----收款。
根据类来创建对象被称为实例化。
类的定义
class 类名():
def __init__(self):
属性
pass
def 方法1(self, 参数列表):
pass
def 方法2(self, 参数列表):
pass
举例
class Student():
name = None
score = 0
def sleep(self):
"""就是我们 之前学的的函数,第一个参数是self, 不用传参"""
print("在呼呼的睡zzz".format())
def study(self):
print("嗷嗷的学习")
# 实例化对象去使用类
#对象名 = 类名()
stu1 = Student()
stu2 = Student()
# 为属性赋值
stu1.name = "胡禹航"
stu1.score = 100
print(stu1.name)
print(stu1.score)
stu1.study()
stu1.sleep()
stu2.name = "张三"
stu2.score =88
self
class Student():
def __init__(self):
self.name = None
self.score = 0
def sleep(self):
print("{}在呼呼的睡zzz".format(self.name))
def study(self):
print("{}嗷嗷的学习, self的地址是{}".format(self.name, id(self)))
# self 代表的是当前类对象
# 就是哪个对象在被调用, self就是哪个对象
stu1 = Student()
stu2 = Student()
print("stu1的地址 = ", id(stu1))
print("stu2的地址 = ", id(stu2))
stu1.name = "胡禹航"
stu2.name = "张三"
stu1.study()
stu2.study()
__init__函数
class Student():
def __init__(self, name, score, gender="男"):
"""构造方法, 类被实例化的时候会自动调用"""
print("__init__ 被调用")
self.name = name
self.score = score
self.gender = gender
def sleep(self):
print("{}在呼呼的睡zzz".format(self.name))
def study(self):
print("{}嗷嗷的学习".format(self.name))
stu1 = Student("胡禹航", 100)
print(stu1.name)
print(stu1.score)
print(stu1.gender)
自定义一个dog类
# Dog # 两个属性和方法,并且创建对象的时候初始化全部属性的时候
class dog():
def __init__(self,name,variety):
self.name=name
self.variety=variety
def bark(self):
print('{}嗷嗷地叫唤'.format(self.name))
def eat(self):
print('{}卖力地吃着狗盆里的食物'.format(self.name))
dog1=dog('雪儿','萨摩')
print(dog1.name)
print(dog1.variety)
dog1.bark()
dog1.eat()
__str___方法
class Dog():
def __init__(self,name,variety):
self.name=name
self.variety=variety
def bark(self):
print('{}嗷嗷地叫唤'.format(self.name))
def eat(self):
print('{}卖力地吃着狗盆里的食物'.format(self.name))
def __str__(self):
return "name = {}, variety = {}".format(self.name, self.variety)
dog1=Dog('雪儿','萨摩')
dog2=Dog('雨儿','萨摩')
print(dog1.name)
print(dog1.variety)
dog1.bark()
dog1.eat()
print(dog1) # <__main__.Dog object at 0x00000128A6AA6988>
ls = []
ls.append(dog1)
ls.append(dog2)
for dog in ls:
print(dog)
属性私有
from stu import Student
### 面向对象的封装特性, 属性私有, 提供方法供访问个修改
s1 = Student("胡禹航", 100)
# s1.__sleep()
s1.study()
# print(s1.__money)
s1.setMoney(999)
print(s1.getMoney())
测试
from stu import Student
### 面向对象的封装特性, 属性私有, 提供方法供访问个修改
s1 = Student("胡禹航", 100)
# s1.__sleep()
s1.study()
# print(s1.__money)
s1.setMoney(999)
print(s1.getMoney())