python3简明教程-实验楼_类 - 蓝桥

只要将类对象看作是【无参数函数】即可,它返回新的类实例

x = Myclass()

很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 __init__() 的特殊方法。若类定义了 __init__(),类的实例化操作会自动为【新创建的类实例】调用__init__() :

def __init__(self):

self.data = []

当然__init__() 可以有参数,同样传递给实例对象:

class Complex(object):

def __init__(self, realpart, imagpart):

self.realpart = realpart

self.imagpart = imagpart

x = Complex(1, 2)

x.realpart, x.imagpart

类属性的读取方法:

一般如下直接访问和更改:

>>> class Student(object):

... def __init__(self, name):

... self.name = name

...

>>> std = Student("Kushal Das")

>>> print(std.name)

Kushal Das

>>> std.name = "Python"

>>> print(std.name)

Python

不要在类里定义setters 或getters 方法。 即使采用_或__作开头命名变量,也只能警告,并不会阻止访问。

若要精确控制属性的访问,就用@property,这是它的存在意义。它能将一个【类方法】变成【只读属性】,从而能用.语法访问;以及实现一个属性的getter和setter。

#!/usr/bin/env python3

class Account(object):

"""账号类,

amount 是美元金额.

"""

def __init__(self, rate):

self.__amt = 0

self.rate = rate

@property

def amount(self):

"""账号余额(美元)"""

return self.__amt

@property

def cny(self):

"""账号余额(人名币)"""

return self.__amt * self.rate

@amount.setter # amount变为属性后,为其创建一个setter方法。用一个名为@amount.setter的装饰器装饰 同样名为"amount"的第二个method来实现。

def amount(self, value):

if value < 0:

print("Sorry, no negative amount in the account.")

return

self.__amt = value

if __name__ == '__main__':

acc = Account(rate=6.6) # 基于课程编写时的汇率

acc.amount = 20

print("Dollar amount:", acc.amount)

print("In CNY:", acc.cny)

acc.amount = -100

print("Dollar amount:", acc.amount)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值