python面向对象之类

python面向对象之类

类的定义与使用:
类的定义

类就是对象的属性和方法的封装,静态的特征称为属性,动态的动作称为方法。
类通常的语法格式如下:
class ClassName:
#属性
[属性定义体]
#方法
[方法定义体]

类的定义以关键字class开始,类名必须以大写字母开头,类名后面紧跟冒号“:”。
类的定义示例如下:
class Person: # Python的类名约定以大写字母开头
#----类的一个示例----

属性
skincolor = "yellow"
  high = 168

weight = 65
  #方法
  def goroad(self):
          print("人走路动作的测试……")
  def sleep(self):
          print("睡觉,晚安!")

从上例可以看出,属性就是变量,静态的特征,方法就是一个个的函数,通过这些函数来描述动作行为。

在定义类属性的时候一般用名词,定义类方法的时候一般用动词,类名约定以大写字母开头,函数约定以小写字母开头。

类定义好之后,就可将类实例化为对象。类实例化对象的语法格式如下:
对象名 = 类名()
实例化对象的操作符是:等号“=”,在类实例化对象的时候,类名后面要添加一个括号“()”。
类实例化示例:

p = Person()
上例将类Person实例化为对象p。

类的构造方法及专有方法

类的构造方法是:init(self)。
只要实例化一个对象的时候,这个方法就会在对象被创建的时候自动调用。实例化对象的时候是可以传入参数的,这些参数会自动传入__init__(self,param1,param2,…)方法中,我们可以通过重写这个方法来自定义对象的初始化操作。如下例所示代码:

class Bear:
        def __init__(self,name):
           self.name = name
        def kill(self):

 print("%s,是保护动物,不能杀..."% self.name)

运行结果如下:

a = Bear('狗熊')

a.kill()

狗熊,是保护动物,不能杀…
在上例中,我们重写了__init__(self)方法,如果没有重写,它的默认调用就是__init__(self),没有任何参数或只有一个self参数,所以在实例化的时候,参数是空的。在例子中,我们给了它一个参数name,就成了__init__(self,name),在实例化的时候就可以传参数了,因为第一个参数self

是默认的,就把“狗熊”传给“name”,运行程序后得到了我们期望的结果,这样使用起来就非常方便。
另外,我们还可以把传入的参数设置为默认参数,我们在实例化的时候不传入参数系统也不会报错,如下例所示代码:

class Bear:
        def __init__(self,name = "默认的熊"):
           self.name = name
        def kill(self):
          print("%s,是保护动物,不能杀..."% self.name)

代码运行结果如下:

b = Bear()
b.kill()
默认的熊,是保护动物,不能杀...
c = Bear('替代熊')
c.kill()

替代熊,是保护动物,不能杀…
在上例中,我们把构造函数的参数name设置为默认值:“默认的熊”

对象实例化的时候没有传值给参数name,程序运行正确,输出了期望的结果:“默认的熊,是保护动物,不能杀…”,当在对象实例化的时候给参数name传值为:“替代熊”,当对象c调用方法kill()时,输出了正确的结果:“替代熊,是保护动物,不能杀…”。

大家都知道,在C++/java中,是通过关键字public、private来表明访问的权限是公有、私有的。然而在Python中,默认情况下对象的属性和方法都是公开的,公有的,通过点(.)操作符来访问,如下例所示代码:

class Company:
        name = "云创科技"
运行结果如下:
c = Company()
c.name
'云创科技'

在上例中,我们直接通过点(.)来访问了类Company的变量name,运行得到了结果:云创科技。
为了实现类似于私有变量的特征,Python内部采用了name mangling的技术(名字重整或名字改变),在变量名或函数名前加上两个下划线(“__”),这个函数或变量就变为私有了。
为了访问类中的私有变量,有一个折衷的处理办法,如下例所示代码:

class Company:
        __name = "云创科技"
        def getname(self):

  return self.__name

运行结果如下:

c = Company()
c.getname()
'云创科技'

在上例中,我们在类Company内部重新定义一个方法getname(self),在程序外部通过访问对象的getname()方法来访问了类Company中的私有变量:__name。

c.getname()
'云创科技'
c._Company__name
'云创科技'
Company__name,运行得到了期望的结果。
从上述可见,就目前而言,Python的私有机制是伪私有,Python的类是没有权限控制的,变量是可以被外部调用的。
获取对象信息

类实例化对象之后,对象就可以调用类的属性和方法,语法格式如下:
对象名 . 属性名
对象名 . 方法名
对象调用类的属性或方法的操作符是:点“.”。
对象调用属性或方法的示例:

p.goroad()
人走路动作的测试……
p.skincolor
获取对象信息
'yellow'

p.sleep()
睡觉,晚安!
p.high
168
p.weight
65

在上例中,对象p分别调用了类Person的方法goroad、属性skincolor、方法sleep、属性high、属性weight。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deng872347348

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值