Hirdetés
- Amit a Samsung okostelefonok, táblagépek, kütyük "régiózásáról" tudni kell!
- Fűzzük össze a szavakat :)
- Hőszivattyu medencefűtés
- Nagy "hülyétkapokazapróktól" topik
- Asszociációs játék. :)
- Ingyen kellene, de tegnapra
- Hass.io - Home Assistant telepítés, beállítás
- Itt az új LOGOUT!
- A KOReader ebook olvasó program
- Szólánc.
Új hozzászólás Aktív témák
-
cousin333
addikt
A namedtuple egy "gyártó függvény" (factory function), aminek az eredménye ebben az esetben egy osztály lesz (mintha mondjuk nem kellene megírnod a Kör osztályt előre, hanem futás közben dinamikusan hoznád létre). Az i2c_io_pinout tehát lényegében egy osztály (amit talán elegánsabb lenne ennek megfelelően camel-case-el jelölni: pl. I2cIoPinout), az i2c_io_state meg valóban egy példány.
Az adott számú "kulcsnevet" vagy az eredeti elnevezés tömbbel éred el, vagy a _fields paraméterrel. Pl.:
i2c_io_state._fields[1]
Őszintén szólva nem tudom, mire kell, de nekem az a véleményem, hogy ha ezt akarod elérni, akkor nem jól használod a típust, hiszen ez pont arra lenne jó, hogy ne kelljen ismerni a sorrendet a létrehozást követően.
Alapvetően én az egész külső IC-nek egy osztályt hoznék létre, hasonlóan a már létező I2C, SPI... stb. osztályokhoz, ami aztán minden létező funkciót egy névtérbe "csomagol". Valami ilyesmi struktúrával:
class IoModule(object):
MASK_SWITCH1 = 0x30
def __init__(self, interface):
self.port = interface
self.portA_status = None
self.portB_status = None
def connect(self):
.... # connect here
def close(self):
self.port.close()
def update_ports(self):
self.portA_status = self.port.read(<reg_portA>)
self.portB_status = self.port.read(<reg_portB>)
def compare_portA(self):
port_old = self.portA_status
self.update_ports()
port = self.portA_status
return port & port_old
@property
def id(self):
return self.port.read(<id_reg>)
@property
def Switch1(self):
return True if self.port_status & self.MASK_SWITCH else False
Ebben az esetben az osztályunk példányosításkor megkapja az interfészt (ami ebben az esetben egy I2C objektum), és azt használja a továbbiakban. A fenti kód elég kezdetleges, csak a struktúrát akartam megmutatni.
ui: ha listaelemeken akarsz végigmenni, akkor ne használd a range(len(x)) formulát. Ha az elem kell, akkor
for elem in lista:
print(elem)
Ha kell a sorszám is, akkor enumerate:
for i, elem in enumerate(lista):
print('Az', i, 'elem a(z)', elem)
Ha pedig több egyforma listád van, akkor zip:
for elemA, elemB in zip(listaA, listaB):
print('Az A eleme:', elemA, 'a B eleme pedig:', elemB)
[ Szerkesztve ]
"We spared no expense"
Új hozzászólás Aktív témák
- HP Victus Gaming 16-r1058nt - ÚJ 16" FullHD IPS GAMER notebook - i5-14500HX,16GB, 512 SSD, RTX 4050
- GAMER PC: i5-12400F/13600KF - RTX 3080 GDDR6X - 512GB-4TB M.2 NVMe SSD -16/32GB DDR4 - GAR/SZÁMLA!!!
- Samsung Galaxy Z FLIP 6 12GB/512GB, Silver Shadow, kártyafüggetlen, garancia, makulátlan, új állapot
- Macbook Pro 15" - 2015, 4 mag i7, 16256GB, 100 ciklusos akku, garancia (y2)
- Eladó Konfig I7-10700 32GB DDR4 512GB SSD RTX3060TI 8GB!
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen