python中非序列型別期望值拷貝的解決方案

2021-06-17 20:05:25 字數 1121 閱讀 2293

看下面這段**:

# -*- coding: utf-8 -*-

import copy

class present(object):

def __init__(self, str_cmd):

self._str_cmd = str_cmd

def set_value(self):

temp = "test_cmd"

self._str_cmd = copy.deepcopy(temp)

def get_value(self):

return self._str_cmd

def print_value(self):

# print self._str_cmd

class son(present):

def __init__(self, str_cmd):

present.__init__(self, str_cmd)

self.str_cmd = str_cmd

def son_print(self):

self.str_cmd = self.get_value()

print "son中get_value之後的位址", id(self.str_cmd)

if __name__ == "__main__":

str_cmd = "first"

test = son(str_cmd)

test.set_value()

test.print_value()

test.son_print()

**意圖是son中的str_cmd在present中值被改變,但是在son中希望能看到這個改變。如果沒有標紅的這行,那麼程式執行結果如下:

在son中看到的是39466208這個位址的內容,但是present改變的是39426752,所以雖然名字一樣,但實際兩個類中看到的變數不是同乙個。

如果加上紅色的這句,那麼結果變成:

這個時候get_value之後,son和present的str_cmd都已經指向了同乙個id,所以兩者看到的已經是同乙個變數。

用以上方案可以實現非序列變數的值拷貝,對於序列變數的值拷貝,直接使用copy.deepcopy即可。

關於概率中的期望值

期望值 是指在乙個離散性隨機變數試驗中每次可能結果的概率乘以其結果的總和。參考 1.投一次是7點的概率,首先全部組合是6 6共36種,7點的組合是2 5,3 4,6 1,兩個骰子是6種,故概率是6 36 1 6 2.投n次在第n次出現7點的概率是 n 1次的非7點概率乘第n次的7點概率,即 5 6 ...

二項分布的期望值 E n np 推導

二項分布的期望值 e n np,這個公式是如何推導來的呢?n表示n次試驗,p表示單次試驗的成功概率。e n 表示n次試驗的成功次數的數學期望。這裡還需要依賴乙個求數學期望的公式,所有概率相加 1。所有概率相加 1,即 k 0,n c n,k p k 1 p n k 1 對於試驗n次的情況,有n 1種...

遊戲運營雜談之 遊戲期望值與留存

在移動網際網路的圈子裡,凡是做遊戲的應該都很關注次日留存率,一直以來我們也把次日留存作為衡量一款遊戲品質好壞的標籤。這點就像你在乙個 店買到一件商品後,下次是否繼續去購買完全取決於你第一次購買的體驗和購後的反饋。對於一款遊戲而言,也更是如此,遊戲首先是一款商品,其次才是個人思想的體現。不同的是,我們...