日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 类和对象 atm_Python 类和对象

發布時間:2025/3/19 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 类和对象 atm_Python 类和对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、python中初始化實例屬性 必須在__init__(self,…)方法內(注意:雙下劃線)初始化實例,第一個參數必須為self。

如需動態添加屬性,可用 **kw

class Person(object):

def __init__(self,name,gender,birth,**kw):

self.name = name

self.gender = gender

self.birth = birth

for k,v in kw.iteritems() :

setattr(self,k,v)

xiaoming = Person(‘Xiao Ming‘, ‘Male‘, ‘1990-1-1‘, job=‘Student‘)

print xiaoming.name

print xiaoming.job

2、python中訪問限制

Python對屬性權限的控制是通過屬性名來實現的,如果一個屬性由雙下劃線開頭(__),該屬性就無法被外部訪問。

如果一個屬性以"__xxx__"的形式定義,那它又可以被外部訪問了,以"__xxx__"定義的屬性在Python的類中被稱為特殊屬性,有很多預定義的特殊屬性可以使用,通常我們不要把普通屬性用"__xxx__"定義。

以單下劃線開頭的屬性"_xxx"雖然也可以被外部訪問,但是,按照習慣,他們不應該被外部訪問。

class Person(object):

def __init__(self, name):

self.name = name

self._title = ‘Mr‘

self.__job = ‘Student‘

p = Person(‘Bob‘)

print p.name

# => Bob

print p._title

# => Mr

print p.__job

# => Error

Traceback (most recent call last):

File "", line 1, in

AttributeError: ‘Person‘ object has no attribute ‘__job‘

3、python中創建類屬性

實例屬性每個實例各自擁有,互相獨立,而類屬性有且只有一份。

class Person(object):

address = ‘Earth‘

def __init__(self, name):

self.name = name

調用 Person.address 即可獲得類屬性,通過實例對象也可以獲得類屬性

class Person(object):

count = 0

def __init__(self,name=‘Smith‘):

Person.count = Person.count + 1

self.name = name

p1 = Person(‘Bob‘)

print Person.count

p2 = Person(‘Alice‘)

print Person.count

p3 = Person(‘Tim‘)

print Person.count

p4 = Person()

p5 = Person()

print Person.count

注意,python不支持構造函數的重載。但通過設置默認值,調用構造函數時就可以省略參數。

如 p4 = Person()

4、python中類屬性和實例屬性名字沖突怎么辦

在實例中修改類屬性,可以嗎?

class Person(object):

address = ‘Earth‘

def __init__(self, name):

self.name = name

p1 = Person(‘Bob‘)

p2 = Person(‘Alice‘)

print ‘Person.address = ‘ + Person.address

p1.address = ‘China‘

print ‘p1.address = ‘ + p1.address

print ‘Person.address = ‘ + Person.address

print ‘p2.address = ‘ + p2.address

當實例屬性和類屬性重名時,實例屬性優先級高,它將屏蔽掉對類屬性的訪問。

類的屬性也有訪問權限,帶雙下劃線(__xxx)的屬性無法從外部訪問。

5、python中定義實例方法

類實例方法的定義在類體中,第一個參數必須是self,調用時無需顯示傳入。

class Person(object):

def __init__(self, name):

self.__name = name

def get_name(self):

return self.__name

a = Person("Jim")

a.get_name()

6、python中方法也是屬性

上節中get_name使用下面方式調用時:

print p1.get_name

將返回一個方法,而不是函數返回值

fun = p1.get_name

print fun()

能得到name的值。

可以動態的把方法綁定到一個對象上去(雖然并不常用):

import types

def fn_get_grade(self):

if self.score >= 80:

return ‘A‘

if self.score >= 60:

return ‘B‘

return ‘C‘

class Person(object):

def __init__(self, name, score):

self.name = name

self.score = score

p1 = Person(‘Bob‘, 90)

p1.get_grade = types.MethodType(fn_get_grade, p1, Person)

print p1.get_grade()

# => A

p2 = Person(‘Alice‘, 65)

print p2.get_grade()

# ERROR: AttributeError: ‘Person‘ object has no attribute ‘get_grade‘

# 因為p2實例并沒有綁定get_grade

7、python中定義類方法

通過@classmethod語句將方法綁定到Person類上。

類方法中不用self,使用cls代指類。

class Person(object):

__count = 0

@classmethod

def how_many(cls):

return cls.__count

def __init__(self,name):

Person.__count += 1

self.name = name

print Person.how_many()

p1 = Person(‘Bob‘)

print Person.how_many()

總結

以上是生活随笔為你收集整理的python 类和对象 atm_Python 类和对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。