学习python的第四天

一、知识点

1.面向对象编程基础
“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。”
2.定义类
class class_name (object):
class lhw (object):
def__init__(self):
self._a=1000
if name == “main”:
LHW=lhw()
LHW.a=2000
print(LHW.a)
3.面向对象的进阶
(1)@property装饰器:

class Person(object):

def __init__(self, name, age):
    self._name = name
    self._age = age

# 访问器 - getter方法
@property
def name(self):
    return self._name

# 访问器 - getter方法
@property
def age(self):
    return self._age

# 修改器 - setter方法
@age.setter
def age(self, age):
    self._age = age

def play(self):
    if self._age <= 16:
        print('%s正在玩飞行棋.' % self._name)
    else:
        print('%s正在玩斗地主.' % self._name)

def main():
person = Person(‘王大锤’, 12)
person.play()
person.age = 22
person.play()
# person.name = ‘白元芳’ # AttributeError: can’t set attribute

if name == ‘main’:
main()
4.__slots__魔法
class Person(object):

def __init__(self, name, age):
    self._name = name
    self._age = age

# 访问器 - getter方法
@property
def name(self):
    return self._name

# 访问器 - getter方法
@property
def age(self):
    return self._age

# 修改器 - setter方法
@age.setter
def age(self, age):
    self._age = age

def play(self):
    if self._age <= 16:
        print('%s正在玩飞行棋.' % self._name)
    else:
        print('%s正在玩斗地主.' % self._name)

def main():
person = Person(‘王大锤’, 12)
person.play()
person.age = 22
person.play()
# person.name = ‘白元芳’ # AttributeError: can’t set attribute

if name == ‘main’:
main()
5.静态方法和类方法
from math import sqrt

class Triangle(object):

def __init__(self, a, b, c):
    self._a = a
    self._b = b
    self._c = c

@staticmethod
def is_valid(a, b, c):
    return a + b > c and b + c > a and a + c > b

def perimeter(self):
    return self._a + self._b + self._c

def area(self):
    half = self.perimeter() / 2
    return sqrt(half * (half - self._a) *
                (half - self._b) * (half - self._c))

def main():
a, b, c = 3, 4, 5
# 静态方法和类方法都是通过给类发消息来调用的
if Triangle.is_valid(a, b, c):
t = Triangle(a, b, c)
print(t.perimeter())
# 也可以通过给类发消息来调用对象方法但是要传入接收消息的对象作为参数
# print(Triangle.perimeter(t))
print(t.area())
# print(Triangle.area(t))
else:
print(‘无法构成三角形.’)

if name == ‘main’:
main()

6.继承
class A(object):
def init(self):
self._a = 1000
def A1(self):
print(‘A1’)
class B(A):
def init(self):
A.init(self)

def B1(self):
	print(self.__a)
	self.A1()

if name==“main”:
b=B()
b.B1()

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值