• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
QQ糖_尤尤
博客园    首页    新随笔    联系   管理    订阅  订阅
python中的类

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法:类中定义的函数。
实例化:创建一个类的实例,类的具体对象。
对象:通过类定义的数据结构实例。

1.定义一个类

例:

注意:不能出现汉字和注释,否则不能保存程序,也不能运行(不知道为什么)

噢,原来是python版本的问题 ,python3.8.0可以,python3.8.4不可以

class Person(object):#object 是python中的基类,所有自定义的类都是基于object,可写可不写
    name='张三'  #  name 就是Person类的属性    在函数中叫做变量
print(Person.name)   #输出类属性值
Person.name="李四"   #可以修改属性值
print(Person.name)

所以,上面的程序语句修改为:

1 class Person(object):
2     name='zhangsan'
3 print(Person.name)
4 Person.name="lisi"
5 print(Person.name)

输出结果:

>>> 
==================== RESTART: C:/Users/lenovo/Desktop/aaa.py ===================
zhangsan
lisi
>>> 

 

说明:

 1 class Person(object): #定义一个类,object 是python中的基类,所有自定义的类都是基于object,可写可不写

2     name='zhangsan'     # name 就是Person类的属性 在函数中叫做变量
3 print(Person.name)      #输出类属性值

4 Person.name="lisi"      #可以修改属性值

5 print(Person.name)      #输出类属性值

2.类的实例化
定义类之后,为了进行操作方便还要进行实例化。
例如Person这个类是抽象的,男人、女人、老人、小孩统称为Person,是抽象的。

实际操作中往往是对具体对象的特点的操作,所以要进行类的实例化,简而言之,类的实例化就是从抽象的类到具体的对象。


 1 class Person(object):
 2     name='zhangsan'
 3     Gender="male"
 4 print(Person.name,Person.Gender)
 5 Person.name="Alice"
 6 Person.Gender='female'
 7 print(Person.name,Person.Gender)
 8 xiaofang=Person()
 9 print("xiaofang's English Name is:",xiaofang.name)
10 print("xiaofang's Gender is:",xiaofang.Gender)

输出结果如下:

>>> 
==================== RESTART: C:/Users/lenovo/Desktop/aaa.py ===================
zhangsan male
Alice female
xiaofang's English Name is: Alice
xiaofang's Gender is: female

 


注意:程序中不能出现中文和注释

学会了几个单词:

gender 性别

male 男性

female 女性

3.类的属性与实例属性之间的关系 :

类的属性实例均有,实例可以调用类属性,但是类不可以调用实例属性
类属性,类可以访问到,实例也可以访问到
实例属性类不可以访问到,但是得实例可以访问到

例:

 1 class Person(object):
 2     name='zhangsan'
 3     Gender="male"
 4 print(Person.name,Person.Gender)
 5 Person.name="Alice"
 6 Person.Gender='female'
 7 print(Person.name,Person.Gender)
 8 xiaofang=Person()
 9 print("xiaofang's English Name is:",xiaofang.name)
10 print("xiaofang's Gender is:",xiaofang.Gender)
11 xiaofang.age="16"
12 print(xiaofang.age)
13 print(person.age)

输出结果如下:

>>> 
==================== RESTART: C:/Users/lenovo/Desktop/aaa.py ===================
zhangsan male
Alice female
xiaofang's English Name is: Alice
xiaofang's Gender is: female
16
Traceback (most recent call last):
  File "C:/Users/lenovo/Desktop/aaa.py", line 13, in <module>
    print(person.age)
NameError: name 'person' is not defined

 

可以为实例xiaofang添加属性 

11 xiaofang.age="16"
可以访问实例的属性
12 print(xiaofang.age)
但是类不可以访问到实例的属性
13 print(person.age)
会报错如下:
Traceback (most recent call last):
  File "C:/Users/lenovo/Desktop/aaa.py", line 13, in <module>
    print(person.age)
NameError: name 'person' is not defined

我的理解是:上级的属性,下级可以访问,但是下级的属性,上级不能访问,当然自己可以访问自己的属性。

4.每个实例都是一个独立的变量空间,不同实例之间的空间互相不可见

 1 class Student():
 2  
 3     student_count = 0
 4  
 5     def __init__(self, name, salary):
 6         self.name = name
 7         self.age = salary
 8         Student.student_count += 1
 9     def display_count(self):
10         print('Total student {}'.format(Student.student_count))
11  
12     def display_student(self):
13         print('Name: {}, age: {}'.format(self.name,self.age))
14  
15 
16 student1 = Student('zhangsan',6)
17 student2 = Student('lisi', 10)
18 student3 = Student('wangwu',15)
19  
20 student1.display_student()
21 student2.display_student()
22 student3.display_student()
23 print(student1.name,id(student1))
24 print(student2.name,id(student2))
25 print("Total number of students:",Student.student_count)

输出结果如下:

>>> 
================== RESTART: C:\Users\lenovo\Desktop\class1.py ==================
Name: zhangsan, age: 6
Name: lisi, age: 10
Name: wangwu, age: 15
zhangsan 44109536
lisi 44501288
Total number of students: 3
>>> 

 

 

 
 

 

posted on 2020-07-19 10:02  QQ糖_尤尤  阅读(295)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3