加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python:类与对象命名空间、面对对象的组合用法

发布时间:2020-12-17 00:00:52 所属栏目:Python 来源:网络整理
导读:1,类里可以定义两种属性: #静态属性 #静态属性就是直接在类中定义的变量 #动态属性 #动态属性就是定义在类中的方法 = [ ] (self,teacher,course_name,period,price): self.teacher = = = = 其中类的数据属性是共享给所有对象的 >>> 4341594072>>> 43415940

1,类里可以定义两种属性:

  #静态属性   #静态属性就是直接在类中定义的变量

  #动态属性  #动态属性就是定义在类中的方法

= [] (self,teacher,course_name,period,price): self.teacher ====
  • 其中类的数据属性是共享给所有对象的

  • >>>4341594072 >>>4341594072

    而类的动态属性是绑定到所有对象的  

>>>.Person object at 0x101285860>> >>>

  创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

  

在obj.name会先从obj自己的名称空间里找name,找不到则去类中找,类也找不到就找父类...最后都找不到就抛出异常

<div class="cnblogs_code">

(python.(linux.)
  • 总结
  • # 类中的静态变量 可以被对象和类调用# 对于不可变数据类型来说,类变量最好用类名操作# 对于可变数据类型来说,对象名的修改是共享的,重新赋值是独立的

?2面对对象的组合用法

  软件重用的重要方式除了继承之外还有另外一种方式,即:组合

  组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

问题:

  圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环形类"中组合圆形的实例作为自己的属性来用

math <span style="color: #0000ff">class<span style="color: #000000"> Circle:
<span style="color: #800000">'''<span style="color: #800000">
定义了一个圆形类;
提供计算面积(area)和周长(perimeter)的方法
<span style="color: #800000">'''
<span style="color: #0000ff">def <span style="color: #800080">init<span style="color: #000000">(self,radius):
self.radius =<span style="color: #000000"> radius

</span><span style="color: #0000ff"&gt;def</span><span style="color: #000000"&gt; area(self):
     </span><span style="color: #0000ff"&gt;return</span> pi * self.radius *<span style="color: #000000"&gt; self.radius

</span><span style="color: #0000ff"&gt;def</span><span style="color: #000000"&gt; perimeter(self):
    </span><span style="color: #0000ff"&gt;return</span> 2 * pi *<span style="color: #000000"&gt;self.radius

circle = Circle(10) <span style="color: #008000">#<span style="color: #008000">实例化一个圆
area1 = circle.area() <span style="color: #008000">#<span style="color: #008000">计算圆面积
per1 = circle.perimeter() <span style="color: #008000">#<span style="color: #008000">计算圆周长
<span style="color: #0000ff">print(area1,per1) <span style="color: #008000">#<span style="color: #008000">打印圆面积和周长

<span style="color: #0000ff">class<span style="color: #000000"> Ring:
<span style="color: #800000">'''<span style="color: #800000">
定义了一个圆环类
提供圆环的面积和周长的方法
<span style="color: #800000">'''
<span style="color: #0000ff">def <span style="color: #800080">init<span style="color: #000000">(self,radius_outside,radius_inside):
self.outsid_circle =<span style="color: #000000"> Circle(radius_outside)
self.inside_circle =<span style="color: #000000"> Circle(radius_inside)

</span><span style="color: #0000ff"&gt;def</span><span style="color: #000000"&gt; area(self):
    </span><span style="color: #0000ff"&gt;return</span> self.outsid_circle.area() -<span style="color: #000000"&gt; self.inside_circle.area()

</span><span style="color: #0000ff"&gt;def</span><span style="color: #000000"&gt; perimeter(self):
    </span><span style="color: #0000ff"&gt;return</span>  self.outsid_circle.perimeter() +<span style="color: #000000"&gt; self.inside_circle.perimeter()

ring = Ring(10,5) <span style="color: #008000">#<span style="color: #008000">实例化一个环形
<span style="color: #0000ff">print(ring.perimeter()) <span style="color: #008000">#<span style="color: #008000">计算环形的周长
<span style="color: #0000ff">print(ring.area()) <span style="color: #008000">#<span style="color: #008000">计算环形的面积

用组合的方式建立了类与组合的类之间的关系,它是一种‘有’的关系,比如教师与生日

===<span style="color: #0000ff">class<span style="color: #000000"> Course:
<span style="color: #0000ff">def
<span style="color: #800080">init
<span style="color: #000000">(self,price):
self.name
=<span style="color: #000000"> course_name
self.period
=<span style="color: #000000"> period
self.price
=<span style="color: #000000"> price

<span style="color: #0000ff">class<span style="color: #000000"> Teacher:
<span style="color: #0000ff">def <span style="color: #800080">init<span style="color: #000000">(self,name,age,sex,birthday):
self.name =<span style="color: #000000"> name
self.age =<span style="color: #000000"> age
self.sex =<span style="color: #000000"> sex
self.birthday =<span style="color: #000000">birthday
self.course = Course(<span style="color: #800000">'<span style="color: #800000">python<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">6 month<span style="color: #800000">',2000<span style="color: #000000">)

b = Birthday(2018,1,16<span style="color: #000000">)
egg = Teacher(<span style="color: #800000">'<span style="color: #800000">egon<span style="color: #800000">',<span style="color: #800000">'<span style="color: #800000">女<span style="color: #800000">'<span style="color: #000000">,b)
<span style="color: #0000ff">print<span style="color: #000000">(egg.name)
<span style="color: #0000ff">print<span style="color: #000000">(egg.birthday.year)
<span style="color: #0000ff">print<span style="color: #000000">(egg.birthday.month)
<span style="color: #0000ff">print(egg.course.price)

当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读