python基础 | 类与继承
最佳答案 问答题库548位专家为你答疑解惑
1、类
在Python中,使⽤class关键字定义类,类是⼀个抽象描述,并不是真正的存在,
需要把它初始化才会产⽣⼀个真正的事物,我们称之为对象
在编程过程中,拥有⾏为(函数)和数据的是对象,⽽不是类
class Person:pass # An empty blockp = Person()
print(p)
输出结果:
<__main__.Person object at 0x0000022256BD16D0>
创建了类Person的对象,将其打印出来
class Person1:def sayHi(self):print('Hello, how are you?')p1 = Person1()
p1.sayHi()
输出结果:
Hello, how are you?
成员函数,创建对象调用
1、Python 中所有的类成员(包括数据成员)默认都是公有的,没有权限控制符
2、如果你使⽤的数据成员名称以双下划线前缀,⽐如 __privatevar,Python 的名称管理体系会有效地把它作为私有变量(约定俗成的规定)
3、这样就有⼀个惯例,如果某个变量只想在类或对象中使⽤,就应该以单下划线前缀。⽽其他的名称都将作为公共的,可以被其他类或者对象使⽤。记住这只是⼀个惯例,并不是Python所要求的(与双下划线前缀不同)
class Person2:def __init__(self, name):self.name = namedef sayHi(self):print('Hello, my name is', self.name)p2 = Person2('张三')
p2.sayHi()
输出结果:
Hello, my name is 张三
def __init__(self, name)
:类似于c++构造函数,对象创建的初始化
Person2('张三')
:将字符串 张三 传进去
class Person3:# 统计人口数量population = 0# 类的初始化def __init__(self, name):self.name = nameprint('(Initializing %s)' % self.name)Person3.population += 1# 成员函数def sayHi(self):print('Hi, my name is %s.' % self.name)def howMany(self):if Person3.population == 1:print('I am the only person here.')else:print('We have %d persons here.' % Person3.population)zs = Person3('张三')
zs.sayHi()
zs.howMany()ls = Person3('李四')
ls.sayHi()
ls.howMany()zs.sayHi()
zs.howMany()
print("\n\n")
输出结果:
(Initializing 张三)
Hi, my name is 张三.
I am the only person here.
(Initializing 李四)
Hi, my name is 李四.
We have 2 persons here.
Hi, my name is 张三.
We have 2 persons here.
对成员变量的使用
2、类的继承
# 基类(父类)
class SchoolMember:def __init__(self, name, age):self.name = nameself.age = ageprint('(Initialized SchoolMember: %s)' % self.name)def tell(self):print('Name:"%s" Age:"%s"' % (self.name, self.age))# 派生类(子类)
class Teacher(SchoolMember):def __init__(self, name, age, salary):SchoolMember.__init__(self, name, age) # 先调用基类的self.salary = salaryprint('(Initialized Teacher: %s)' % self.name) # 调用父类的对象,使用自己的参数def tell(self):SchoolMember.tell(self) # 调用基类的函数print('Salary: "%d"' % self.salary) # 调用自己的类中的成员变量class Student(SchoolMember):def __init__(self, name, age, marks):SchoolMember.__init__(self, name, age)self.marks = marksprint('(Initialized Student: %s)' % self.name) # 把父类的对象也继承了def tell(self):SchoolMember.tell(self) # 基类有自己的tell函数,调用基类的函数,加上自己的语句print('Marks: "%d"' % self.marks)t = Teacher('张老师', 40, 30000)
s = Student('王二', 22, 75)
members = [t, s] # 列表有两个成员
for member in members:member.tell()
输出结果:
(Initialized SchoolMember: 张老师)
(Initialized Teacher: 张老师)
(Initialized SchoolMember: 王二)
(Initialized Student: 王二)
Name:“张老师” Age:“40”
Salary: “30000”
Name:“王二” Age:“22”
Marks: “75”
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"python基础 | 类与继承":http://eshow365.cn/6-38626-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 企业数字化过程中数据仓库与商业智能的目标
- 下一篇: C生万物 | 从浅入深理解指针【最后部分】